Есть идеи, как это сделать в MySQL?

Текущие данные:

ID | name | lvl1 | lvl2 | lvl3
1   justin  test  

Желаемый результат:

ID | name | lvl1 | lvl2 | lvl3
1   justin         test  
0
adytzul89 17 Фев 2016 в 18:50

2 ответа

Лучший ответ
UPDATE tbl SET lvl2 = lvl1, lvl1 = NULL WHERE id = 1;
1
Travesty3 17 Фев 2016 в 15:57

Я думаю, что оператор обновления должен обновить все строки таблицы.

UPDATE tbl SET lvl2 = lvl1, lvl1 = NULL;-- works well on Oracle

Поскольку обновление MySql работает только с доступным предложением where, мы должны добавить его, как показано ниже.

UPDATE tbl SET lvl2 = lvl1, lvl1 = NULL WHERE id IS NOT NULL;

Здесь мы присваиваем значение lvl1 значению lvl2 и lvl1 равному нулю, если идентификатор равен нулю, т.е. эти изменения вносятся в каждую строку таблицы tbl.

Если вы хотите выполнить обновление только тогда, когда lvl1 не равен нулю, попробуйте:

UPDATE tbl SET lvl2 = lvl1, lvl1 = NULL WHERE lvl1  IS NOT NULL;
1
cdaiga 18 Фев 2016 в 07:46