如何为mysql中的字段提供自动编号?

时间:2013-10-28 12:48:43

标签: mysql

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

这就像

我有字段名称,编号

name       number
--------------------
aaaa          1
bbbb          2
cccc          3
dddd          4
eeee          5

现在我要删除第3个字段(即cccc) 删除后如果我选择了该表中的所有行 我希望获得像

这样的输出
name      number
-----------------------
aaaa        1
bbbb        2
dddd        3
eeee        4

任何人都可以为此提供更好的解决方案吗?

4 个答案:

答案 0 :(得分:3)

第一个:为什么这样做?看起来您的数字序列通常是主键,这意味着 - 它没有数字本身的其他含义。因此,您无需担心其中的差距 - 让DBMS为您处理。

如果您仍想重新排列号码,可以执行以下操作:

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

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

答案 1 :(得分:1)

您可以在选择

时即时进行排名
select name, 
       @rank := @rank + 1 as number
from your_table, (select @rank := 0) r
order by name

然后,您根本不需要在表格中添加number列。

答案 2 :(得分:0)

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

UPDATE table SET number=(number-1) WHERE number>$NumberPosition

答案 3 :(得分:-1)

为您想要的号码设置自动增量

检查此链接

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