2012-03-30 115 views
1

比方说,我有一个表是这样的:我可以用纯SQL做这个吗?

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

是哪个名字列有哪个order_id的问题? – safarov 2012-03-30 06:54:56

+0

除了直接的oracle的rownum之外,还有其他的要求吗? – cctan 2012-03-30 06:55:09

+0

@safarov无论哪个名字 – Bogdan 2012-03-30 07:10:48

回答

3

您可以更新表:

SET @oo = 0; 
UPDATE table SET `order_id`[email protected]:[email protected]+1 ORDER By something; 

或者只是得到ORDER_ID返回的行数,同时选择:

SET @oo = 0; 
SELECT name, @oo:[email protected]+1 order_id FROM table ORDER By something; 
+0

这就是我正在寻找的。它适用于MySQL,现在我需要弄清楚hsqldb的语法:) – Bogdan 2012-03-30 07:39:23

0

你的意思是这样的?问题不明确。

DECLARE @order_id int 
SET @order_id = 0 
UPDATE #tmp_Users 
SET @order_id = order_id = @order_id + 1