2012-03-30 2 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

это вопрос, имя которого есть column which which order_id? – safarov

+0

Есть ли другие требования, кроме простого rownum oracle? – cctan

+0

@safarov не имеет значения, какое имя – Bogdan

ответ

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

0

ли вы имеете в виду что-то вроде этого? Вопрос не так ясен.

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