阿宅. 发表于 2009-1-5 15:41

请教一个简单的sql问题

想问下,我有个字段id有些不按顺序来,有些是null
我想按照现在的顺序对记录排序,对其从1一直自加编排好

原来这样----------------->变成这样
id                                    id
1                                       1
3                                       2
7                                       3
nul                                    4
null                                 5
...                                    ....

请教sql怎么写

阿宅. 发表于 2009-1-5 15:42

实在不行,我导出到excel再处理了导入数据库
不过我想知道用sql怎么处理,麻烦了

冯家老二 发表于 2009-1-5 15:50

完全不懂什么叫sql的路过~~

话说,好似某本C课本里面冒泡法的例题

阿宅. 发表于 2009-1-5 18:32

冒泡法是对有数字大小的记录进行排序
不过我这个是不变记录的顺序,给记录进行编号

阿宅. 发表于 2009-1-7 21:10

有设置值吗

iptton 发表于 2009-1-7 23:04

php喜悦村的一个版主说没有办法做到... https://www.phpx.com/thread-92013-1-1.html

LZ用的是ACCESS吧...
以下应该是MySQL的解决方法,可以参考下
方法一:
建张一样结构的结构相同的表
然后
insert into new_table (除auto_increment字段) select除auto_increment字段from old_table order by auto_increment字段 asc

方法二:
Alter TABLE man_posts Drop ID;   丢掉id字段
Alter TABLE man_posts ADD ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST 添加id字段

方法来自google:
http://www.google.cn/search?hl=zh-CN&newwindow=1&client=opera&rls=zh-cn&hs=Iiu&q=id%E8%BF%9E%E7%BB%AD+auto_increment&btnG=Google+%E6%90%9C%E7%B4%A2&meta=lr%3Dlang_zh-CN%7Clang_zh-TW%7Clang_en&aq=f&oq=

阿宅. 发表于 2009-1-8 20:06

我用的是sql server2005
应该差不多
我和喜悦村的那贴应该不同,因为我的id没做限定,可以是重复或者不要
但为了共用程序好编写,所以我用id来沟通(公用程序只接收post的id来读取或者update数据),所以希望给id编个号,尽可能不要重复

我试过导出到excel后用手工批量编号的方式,导回去后sql 2005之后有些数据丢失了,估计一修改就改变了数据类型

[ 本帖最后由 阿宅. 于 2009-1-8 20:08 编辑 ]

阿宅. 发表于 2009-1-8 20:13

想起access和sql 2005有点不同,acces可以设置字段为自动编号,该字段不需要写入值的,它update一条数据id就会自动+1
sql 2005字段类型没这样的类型,好像可以设置标示、标示累加的方法
不过我的id字段不能设置标示,只能是普通的int或者float类型

[ 本帖最后由 阿宅. 于 2009-1-8 20:16 编辑 ]

皇家救星 发表于 2009-1-9 10:23

identity(1,1) 在sql2000里面是有的

现在你这样的情况可以建多一个临时表,表结构跟你现在的表一样,但是id是自动增长的

然后再通过insert将现在的表里面按id顺序依次插到临时表中

最后清空原表,将临时表里面的数据导过来

以后在程序里面保证每次插进去的id都是现有id中最大的

阿宅. 发表于 2009-1-9 14:45

谢谢,好像只能是这样了

justiam 发表于 2009-1-14 16:03

原帖由 皇家救星 于 2009-1-9 10:23 发表 https://www.gdutbbs.com/images/common/back.gif
identity(1,1) 在sql2000里面是有的

现在你这样的情况可以建多一个临时表,表结构跟你现在的表一样,但是id是自动增长的

然后再通过insert将现在的表里面按id顺序依次插到临时表中

最后清空原表,将临时表里 ...


最好一开始就用标识,这个很方便,要不LZ你也可以用EXCEL来暂时处理你现在的问题。两种方法都很方便....
页: [1]
查看完整版本: 请教一个简单的sql问题