我们说我有这样一张桌子:
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过程中使用脚本来执行此操作,这两种解决方案都涉及循环整个表。
答案 0 :(得分:3)
您可以更新表格:
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;
答案 1 :(得分:0)
DECLARE @order_id int
SET @order_id = 0
UPDATE #tmp_Users
SET @order_id = order_id = @order_id + 1