假设我有一个这样的表:
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;
或者在选择时只获取 order_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/