这就是我的表与几条记录的样子。
+--ID--+--DESC--+--ORD--+
| 001 | lal1 | 003 |
| 002 | lal2 | 001 |
| 003 | lal3 | 002 |
| 005 | lal4 | 004 |
| 006 | lal5 | 006 |
| 007 | lal8 | 009 |
+------+--------+-------+
该ORD
列是建立特定顺序所必需的,该顺序来自与PKey不同的另一个系统。
此时,问题出在 ORD 列的空白处;如您所见,没有数字 5、7、8。
此查询无法正常工作:
SET @count = 0;
UPDATE table
SET table.ord = @count := @count + 1;
ALTER TABLE table AUTO_INCREMENT = 1;
因为它不会消除间隙。
我想要如下结果:
+--ID--+--DESC--+--ORD--+
| 001 | lal1 | 003 |
| 002 | lal2 | 001 |
| 003 | lal3 | 002 |
| 005 | lal4 | 004 |
| 006 | lal5 | 005 |
| 007 | lal8 | 006 |
+------+--------+-------+
使用 UNIX 有命令 SORT 并将其临时带到我可以使它成为可能,但我不知道是否有任何命令允许我通过在 MySQL 中实时查询表来做到这一点。