Инкремент в запросе UPDATE MySQL

211
02 февраля 2018, 19:33

В БД имеется 3 столбца. Необходимо сдвинуть записи во 2 столбце на 1 строку.

set @x:=1;
update test_sql.a123 set `2` = (select `1` from (select `1`, `ind_date` from test_sql.a123) as `e` where `ind_date` = @x+1) where `ind_date` = (@x:=@x+1);

Однако результат работы смущает:

По какой-то причине могут игнорироваться итерации 1 и 2?

P.S.: Если изначально задавать set @x:=0, то итогом работы является все строки null, кроме 1й.

Answer 1
UPDATE a123 t1, a123 t2
SET t1.`2` = t2.`2`
WHERE t1.ind_date = t2.ind_date - 1
READ ALSO
SELECT и выборка из другой таблицы

SELECT и выборка из другой таблицы

Довольно простой запрос, только мне ещё нужно получить дополнительное поле sub_count, которое берется при помощи COUNT(*) из другой таблицы

276
BackgroundWorker

BackgroundWorker

vkMessages

295