MySQL - UPDATE mehrere Zeilen mit unterschiedlichen Werten in einer Abfrage
Ich versuche zu verstehen, wie UPDATE mehrere Zeilen mit verschiedenen Werten und ich verstehe es einfach nicht. Die Lösung ist überall, aber für mich sieht das schwer zu verstehen.
Beispielsweise drei updates in 1 query:
UPDATE table_users
SET cod_user = '622057'
, date = '12082014'
WHERE user_rol = 'student'
AND cod_office = '123456';
UPDATE table_users
SET cod_user = '2913659'
, date = '12082014'
WHERE user_rol = 'assistant'
AND cod_office = '123456';
UPDATE table_users
SET cod_user = '6160230'
, date = '12082014'
WHERE user_rol = 'admin'
AND cod_office = '123456';
Ich Lesen ein Beispiel, aber ich verstehe wirklich nicht, wie man die Abfrage. ich.e:
UPDATE table_to_update
SET cod_user= IF(cod_office = '123456','622057','2913659','6160230')
,date = IF(cod_office = '123456','12082014')
WHERE ?? IN (??) ;
Ich bin mir nicht ganz klar, wie man die Abfrage, wenn es mehrere Bedingung in der WHERE-und in der IF-Bedingung..irgendwelche Ideen?
InformationsquelleAutor der Frage franvergara66 | 2014-09-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie es auf diese Weise:
Ich verstehe nicht, Ihre Datumsformat. Termine sollten in der Datenbank gespeichert werden mit einheitlichen Datums-und Zeit-Typen.
InformationsquelleAutor der Antwort Gordon Linoff
MySQL erlaubt es einem besser lesbaren Weise kombinieren, um mehrere updates in einer einzigen Abfrage. Dies scheint besser zu passen das Szenario, das Sie beschreiben, ist viel leichter zu Lesen und vermeidet diejenigen, die schwer zu entwirren mehrere Bedingungen.
Dies setzt Voraus, dass die
user_rol, cod_office
Kombination ist ein primary key. Wenn nur eine davon ist die PK, fügen Sie dann das andere Feld an, um die UPDATE-Liste.Wenn keiner von Ihnen ist ein Primärschlüssel (das scheint unwahrscheinlich), dann ist dieser Ansatz immer neue Datensätze erstellt werden - wahrscheinlich nicht das, was gewünscht wird.
Jedoch, dieser Ansatz macht prepared statements einfacher zu erstellen und übersichtlicher.
InformationsquelleAutor der Antwort John Trevithick
Können Sie eine
CASE
- Anweisung, um mehrere wenn/dann-Szenarien:InformationsquelleAutor der Antwort Hart CO
InformationsquelleAutor der Antwort Akshay Bhan