5

我想为 MySQL 数据库中的字段提供自动编号?

这就像

我有字段名称,编号

姓名号码
--------------------
啊啊1
bbbb 2
cccc 3
dddd 4
eee 5

现在我想删除第三个字段(即,cccc)删除后,如果我从该表中选择了所有行,我想得到类似的输出

姓名号码
----------------------
啊啊1
bbbb 2
dddd 3
eeee 4

谁能为此提供更好的解决方案?

4

4 回答 4

3

首先:为什么要这样做?看来您的数字序列通常是主键,这意味着 - 该数字本身没有其他含义。因此,您无需担心其中的空白 - 让 DBMS 为您处理。

如果您仍想重新排列您的号码,您可以这样做:

UPDATE t CROSS JOIN (SELECT @i:=0) AS init SET t.number=@i:=@i+1

-但是,真的,想想这个 - 即如果你真的需要这样做。

于 2013-10-28T12:53:02.597 回答
1

您可以在选择时即时进行排名

select name, 
       @rank := @rank + 1 as number
from your_table, (select @rank := 0) r
order by name

然后,您根本不需要number表格中的列。

于 2013-10-28T12:52:23.100 回答
0

假设代码有一个数字位置的变量,例如$NumberPosition=3,那么

UPDATE table SET number=(number-1) WHERE number>$NumberPosition
于 2013-10-28T13:04:19.573 回答
-1

为您想要的数字设置自动增量

检查此链接

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

于 2013-10-28T12:52:19.477 回答