MYSQL Обновление столбца с последовательным числовым значением IF NULL - продолжение последовательности - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь сохранить текущий порядковый номер для таблицы.Я буду запускать запрос по расписанию каждую ночь, чтобы обновить таблицу и заполнить порядковый номер на основе последнего номера +1 и продолжить.

Моя таблица: mis_order_charges

ID    item_id    SEQ
1       20        1
5       15        2
6       21        3
9       20       NULL
12      21       NULL

Так что я быхотел бы выполнить запрос на обновление, чтобы заполнить NULL 4 и 5, и, конечно, продолжать это каждый запуск.

Я пробовал несколько вещей:

insert into misc_order_charges (seq)
SELECT @row := @row + 1 as row
FROM misc_order_charges moc, (SELECT @row := 0) r where seq is null;

Didn 't работа

UPDATE misc_order_charges
JOIN (SELECT @rank := 0) r
SET seq=@rank:=@rank+1 where misc_order_charges.seq is null;

Вышеописанное сработало, но, конечно, сбросило подсчитанные значения, поэтому NULL получили 1 & 2

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 11 декабря 2018

Вы можете получить максимальное значение, используя функцию MAX (), чтобы использовать ее в качестве основы для переменной ранга.

т.е.

UPDATE misc_order_charges
JOIN (SELECT @rank := (SELECT MAX(T.SEQ) FROM misc_order_charges as T)) r
SET seq=@rank:=@rank+1 where misc_order_charges.seq is null;

Это получит первый ранг как любой максимальный номер SEQ.в твоей таблице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...