Выборочный DUPLICATE KEY UPDATE

Хочу добавить новые строки , а строки с одинаковыми ключами обновить свежими данными, но только те, где ok = 1 Сейчас

INSERT INTO `table` ( `id`,`comment`) VALUES $vs  ON DUPLICATE KEY UPDATE  `comment` = VALUES(`comment`)

Хочу

INSERT INTO `table` ( `id`, `comment`) VALUES $vs  ON DUPLICATE KEY UPDATE  `comment` = VALUES(`comment`) WHERE `ok`=1

Знаю, что WHERE при INSERT и ON DUPLICATE KEY UPDATE недопустимы. Как реализовать желамое ?


Ответы (1 шт):

Автор решения: Akina
INSERT INTO `table` ( `id`, `comment`) 
VALUES $vs  
ON DUPLICATE KEY UPDATE 
`comment` = CASE WHEN `ok`=1 
                 THEN VALUES(`comment`) 
                 ELSE `comment` 
                 END;
→ Ссылка