Вставка ODKU с условием - MySQL
Формулировка задачи:
Добрый день!
Есть такой запрос:
Как можно добавить в него условие, чтоб ODKU выполнялся только когда info=789 или IS NULL?
INSERT INTO TABLE SET id=123, info=456 ON DUPLICATE KEY UPDATE info=456;
Решение задачи: «Вставка ODKU с условием»
textual
Листинг программы
INSERT INTO TABLE SET id=123, info=456 ON DUPLICATE KEY UPDATE info= CASE WHEN IFNULL(info,789)=789 THEN 456 ELSE info END
Объяснение кода листинга программы
В представленном коде выполняется вставка данных в таблицу MySQL с условием обновления существующих записей, если они имеются, с использованием оператора ON DUPLICATE KEY UPDATE. Список действий, выполняемых в данном коде:
- Вставить данные в таблицу
TABLEс помощью оператораINSERT INTO. - Указать значения для двух переменных:
idиinfo. - Если запись с первичным ключом
idуже существует в таблице (DUPLICATE KEY), то выполнить обновление данных с помощью оператораON DUPLICATE KEY UPDATE. - Обновить значение переменной
infoв соответствии с условиемCASE WHEN IFNULL(info,789)=789 THEN 456 ELSE info END. Таким образом, в результате выполнения данного кода в таблицеTABLEбудет вставлена новая запись с указанными значениями переменныхidиinfo, а если запись с такимidуже существует, то значение переменнойinfoбудет обновлено согласно указанному условию.