я могу сделать это с чистым SQL? - PullRequest
1 голос
/ 30 марта 2012

Допустим, у меня есть таблица, подобная этой:

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 ]

3 голосов
/ 30 марта 2012

Вы можете обновить таблицу:

 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;
0 голосов
/ 30 марта 2012

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

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