powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Можно ли ON DUPLICATE KEY UPDATE с условием WHERE ?
5 сообщений из 5, страница 1 из 1
Можно ли ON DUPLICATE KEY UPDATE с условием WHERE ?
    #39305216
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня.

Документация не предусматривает такого варианта, потому вопрошаю здесь.

Что имеется. Табличка на несколько полей и около 10 млн. строк. SELECT довольно частые, INSERT редко и помногу, редкие UPDATE единичных записей. По двум полям имеется уникальный ключ UNIQUE KEY `item_date` (`item_id`,`item_date`) - суть - обеспечить единственное значение параметра элемента в пределах суток.

Появилась необходимость видоизменить добавление записей. А именно, в случае совпадения ключа (индекс) нужно обновлять поле значения параметра `item_value` существующей записи при условии, что поле `item_lock`=0.

Пока вижу только решение с дополнительным запросом SELECT и последующим INSERT или UPDATE по ситуации.

Но, может быть, имеется какой-то способ сделать проверку поля при ON DUPLICATE KEY UPDATE ?
...
Рейтинг: 0 / 0
Можно ли ON DUPLICATE KEY UPDATE с условием WHERE ?
    #39305225
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleможет быть, имеется какой-то способ сделать проверку поля при ON DUPLICATE KEY UPDATE ?Эта часть запроса работает строго для одной записи. Условие бессмысленно.
Можно так:
Код: sql
1.
2.
3.
4.
5.
ON DUPLICATE KEY UPDATE 
SET item_value = CASE item_lock 
                 WHEN 0 THEN VALUES(item_value) 
                        ELSE @new_value 
                 END
...
Рейтинг: 0 / 0
Можно ли ON DUPLICATE KEY UPDATE с условием WHERE ?
    #39305227
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон, CASE VALUES(item_lock).
...
Рейтинг: 0 / 0
Можно ли ON DUPLICATE KEY UPDATE с условием WHERE ?
    #39305266
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Благодарю, не сообразил сразу :)
...
Рейтинг: 0 / 0
Можно ли ON DUPLICATE KEY UPDATE с условием WHERE ?
    #39305343
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал так
Код: sql
1.
... ON DUPLICATE KEY UPDATE `item_value` = IF(`item_lock`=0, @new_value, `item_value`)



Вроде, попроще в смысле удобочитаемости и понимания.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Можно ли ON DUPLICATE KEY UPDATE с условием WHERE ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]