假设我有一张这样的桌子:
name |order_id
=======================
first_record | 0
second_record | 0
third_record | 0
[...]
我只想用一个递增的值来更新
order_id
(不知道如何用英语正确地表达这一点-请随意编辑一个更好的描述)。预期产出如下:name |order_id
=======================
first_record | 1
second_record | 2
third_record | 3
[...] | n
我知道如何通过使用某种编程语言中的脚本或sql过程来实现这一点,这两种解决方案都涉及循环整个表。
最佳答案
您可以更新表:
SET @oo = 0;
UPDATE table SET `order_id`=@oo:=@oo+1 ORDER By something;
或者在选择以下选项时,只获取订单id作为返回的行号:
SET @oo = 0;
SELECT name, @oo:=@oo+1 order_id FROM table ORDER By something;
关于mysql - 我可以使用纯SQL做到这一点吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9938209/