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

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

Что имеется. Табличка на несколько полей и около 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
07.09.2016, 14:18
    #39305225
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли ON DUPLICATE KEY UPDATE с условием WHERE ?
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
07.09.2016, 14:19
    #39305227
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли ON DUPLICATE KEY UPDATE с условием WHERE ?
Пардон, CASE VALUES(item_lock).
...
Рейтинг: 0 / 0
07.09.2016, 15:11
    #39305266
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли ON DUPLICATE KEY UPDATE с условием WHERE ?
Akina,

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



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


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