«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как реализовать условные обновления с помощью INSERT... ON DUPLICATE KEY в SQL?

Как реализовать условные обновления с помощью INSERT... ON DUPLICATE KEY в SQL?

Опубликовано 9 января 2025 г.
Просматривать:412

How to Implement Conditional Updates with INSERT ... ON DUPLICATE KEY in SQL?

Условные ОБНОВЛЕНИЯ для INSERT ... ON DUPLICATE KEY

Вставка или обновление записей на основе повторяющихся ключевых условий является распространенным сценарием при программировании баз данных . Однако иногда вам может потребоваться дополнительно ограничить условие обновления, сделав его зависимым от дополнительных критериев. К сожалению, синтаксис INSERT ... ON DUPLICATE KEY UPDATE изначально не поддерживает предложения WHERE для условных обновлений.

Преодоление ограничения

Чтобы обойти это ограничение, вы может использовать функцию IF() в предложении UPDATE. Функция ЕСЛИ() позволяет указать альтернативное значение на основе заданного логического выражения.

Пример реализации

Рассмотрите следующую команду INSERT ... ON DUPLICATE KEY UPDATE запрос:

INSERT INTO daily_events (created_on, last_event_id, last_event_created_at)
VALUES ('2010-01-19', 23, '2010-01-19 10:23:11')
ON DUPLICATE KEY UPDATE
  last_event_id = IF(last_event_created_at < VALUES(last_event_created_at), VALUES(last_event_id), last_event_id);

В этом запросе предложение UPDATE содержит оператор IF(), который проверяет, меньше ли существующее значение Last_event_created_at, чем вставляемое значение. Если существующее значение старше, будет выполнено обновление с заменой Last_event_id новым значением. В противном случае существующий Last_event_id будет сохранен.

Дополнительные соображения

  • Помните, что IF() возвращает NULL, если условие ложно. Следовательно, обновленное значение для Last_event_id также будет NULL, если условие не выполнено.
  • Рассмотрите возможность использования дополнительного предложения WHERE или отдельного запроса UPDATE, чтобы обеспечить желаемую фильтрацию обновления.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3