Conditions de mise à jour de MySQL dans une requête (UPDATE, SET & amp; CASE)
Je suis en train de mettre à jour un ensemble d'enregistrements (boolean
champs) dans une seule requête, si possible.
L'entrée est à venir à partir de paginé commandes de la radio, donc un POST
auront la page de la valeur de l'Id avec un true
ou false
valeur.
J'ai essayé d'aller dans cette direction:
UPDATE my_table
SET field = CASE
WHEN id IN (/* true ids */) THEN TRUE
WHEN id IN (/* false ids */) THEN FALSE
END
Mais cela a donné le "vrai" id de lignes mises à jour à true
et TOUS d'autres lignes ont été mis à jour à false
.
Je suppose que j'ai fait quelques brut erreur de syntaxe, ou peut-être que j'aborde cette question de façon incorrecte.
Toute réflexion sur une solution?
source d'informationauteur Dan Lugg
Vous devez vous connecter pour publier un commentaire.
N'avez-vous pas oublier de faire un "ELSE" dans le cas énoncé?
Sans l'AUTRE, je suppose que l'évaluation de la chaîne s'arrête au dernier moment et exécute la mise à jour. Aussi, vous n'êtes pas limiter les lignes que vous essayez de mettre à jour; si vous ne faites pas AUTRE chose que vous devriez au moins dire la mise à jour pour mettre à jour uniquement les lignes que vous voulez et non pas toutes les lignes (comme vous le faites). Regardez la clause where ci-dessous:
Vous pouvez éviter de champ = champ