0

这就是我的表与几条记录的样子。

+--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 中实时查询表来做到这一点。

4

1 回答 1

0

解决这个问题:

SET @count = 0;
UPDATE tableSET table.ord = @count:= @count + 1 ORDER BY table.ord ASC;

添加Order By

于 2019-07-09T21:08:44.007 回答