这就是我的带有两个记录的表的样子。
+--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中的表上实时查询来执行该命令
答案 0 :(得分:0)
解决这个问题:
SET @count = 0;
UPDATE tableSET table.ord = @count:= @count + 1 ORDER BY table.ord ASC;
添加Order By