我想为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
任何人都可以为此提供更好的解决方案吗?
答案 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)