工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 2120|回复: 10

请教一个简单的sql问题

[复制链接]
发表于 2009-1-5 15:41 | 显示全部楼层 |阅读模式
想问下,我有个字段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 | 显示全部楼层
有设置值吗
回复

使用道具 举报

发表于 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=z ... 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 | 显示全部楼层
谢谢,好像只能是这样了
回复

使用道具 举报

发表于 2009-1-14 16:03 | 显示全部楼层
原帖由 皇家救星 于 2009-1-9 10:23 发表
identity(1,1) 在sql2000里面是有的

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

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

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



最好一开始就用标识,这个很方便,要不LZ你也可以用EXCEL来暂时处理你现在的问题。两种方法都很方便....
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2024-5-20 02:48

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表