我有这样的表:
表1:
sr no. | id | name
id是这里的主键。
我希望sr no.
是循环的
我应该给sr no.
字段赋予什么属性?
例如,我有5条记录sr no
1,2,3,4,5和id
1,2,3,4,5我删除第3条记录然后id
将是1,2,4,5,sr no.
将是1,2,3,4
sr no
不应该失去其争议。
答案 0 :(得分:4)
SELECT @a:=@a+1 serial_number,
name FROM table1,
(SELECT @a:= 0) AS a;
答案 1 :(得分:1)
id
已经是您的主键,那么您需要sr no.
为什么?建议忘掉它。
如果你真的需要它,请参阅我的回答here,原因有几个,这是一个非常糟糕的主意。最重要的原因是:
有理由说MySQL不会自动减少 删除行时自动增量值。这些原因是
- 数据完整性破坏的危险(假设多个用户执行删除或插入...可能会发生加倍或更糟的条目)
使用主从复制或事务时可能会发生- 错误
- 等......
无需担心差距。
要回答您的问题该怎么做,只需在列定义中添加auto_increment
并将其包含在主键中。
答案 2 :(得分:1)
我不知道sr no的真正目的。
但您可以为此表的 DELETE 操作创建Trigger
,现在您可以更新大于当前ID的记录,以便sr no减1。
e.g。你可以在Trigger中写下SQL,
UPDATE table1 SET sr_no = sr_no -1 WHERE id > XYZ;