我可以用纯SQL做到这一点吗?

时间:2012-03-30 06:48:30

标签: mysql sql hsqldb

我们说我有这样一张桌子:

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过程中使用脚本来执行此操作,这两种解决方案都涉及循环整个表。

2 个答案:

答案 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