假设我有一张这样的桌子:

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/

10-11 05:21