Я пытаюсь понять, как ОБНОВИТЬ несколько строк с разными значениями, и я просто не понимаю. Решение есть везде, но мне кажется, что это трудно понять.
Например, три обновления в 1 запрос:
UPDATE table_users
SET cod_user = '622057'
, date = '12082014'
WHERE user_rol = 'student'
AND cod_office = '17389551';
UPDATE table_users
SET cod_user = '2913659'
, date = '12082014'
WHERE user_rol = 'assistant'
AND cod_office = '17389551';
UPDATE table_users
SET cod_user = '6160230'
, date = '12082014'
WHERE user_rol = 'admin'
AND cod_office = '17389551';
Я прочитал пример, но я действительно не понимаю, как сделать запрос. то есть:
UPDATE table_to_update
SET cod_user= IF(cod_office = '17389551','622057','2913659','6160230')
,date = IF(cod_office = '17389551','12082014')
WHERE ?? IN (??) ;
Я не совсем ясно, как сделать запрос, если есть несколько условий в ГДЕ и в условии ЕС .. какие-либо идеи?
mysql
sql
sql-update
franvergara66
источник
источник
Ответы:
Вы можете сделать это следующим образом:
Я не понимаю ваш формат даты. Даты должны храниться в базе данных с использованием собственных типов даты и времени.
источник
update
Это влияет только на записи, которые уже существуют.cod_user
это первичный ключ, а значения перемешиваются, то, вероятно, лучшим вариантом является многократное обновление.MySQL позволяет более читабельный способ объединить несколько обновлений в один запрос. Похоже, что это лучше подходит для сценария, который вы описываете, его гораздо легче читать, и он позволяет избежать тех сложных условий, которые трудно распутать.
Это предполагает, что
user_rol, cod_office
комбинация является первичным ключом. Если только один из них является первичным ключом , добавьте другое поле в список ОБНОВЛЕНИЕ. Если ни один из них не является первичным ключом (что кажется маловероятным), тогда этот подход всегда будет создавать новые записи - вероятно, не то, что требуется.Однако такой подход облегчает построение утверждений и делает его более лаконичным.
источник
cod_user=VALUES(cod_user), ...
, даже из официальных документов MySQL 5.6Вы можете использовать
CASE
оператор для обработки нескольких сценариев if / then:источник
источник
Расширить на @Trevedhek ответ ,
В случае, если обновление должно выполняться с неуникальными ключами, потребуется 4 запроса
ПРИМЕЧАНИЕ. Это не безопасно для транзакций.
Это можно сделать с помощью временной таблицы.
Шаг 1: Создайте ключи временной таблицы и столбцы, которые вы хотите обновить
Шаг 2: Вставьте значения в временную таблицу
Шаг 3: Обновите исходную таблицу
Шаг 4: Удалите временную таблицу
источник
Здесь col4 и col1 находятся в таблице1. col2 и col3 находятся в таблице 2.
Я пытаюсь обновить каждый col1, где col4 = col3 различное значение для каждой строки
источник
Я сделал это так:
где PushSettings
работает нормально
источник