J'essaie de comprendre comment METTRE À JOUR plusieurs lignes avec des valeurs différentes et je ne comprends tout simplement pas. La solution est partout mais elle me semble difficile à comprendre.
Par exemple, deux mises à jour en 1 requête:
UPDATE mytable SET fruit='orange', drink='water', food='pizza' WHERE id=1;
UPDATE mytable SET fruit='strawberry', drink='wine', food='fish' WHERE id=2;
Je ne comprends pas ce que CASE WHEN .. THEN ... END fonctionne et comment l'utiliser.
Je me demande si quelqu'un pourrait m'aider à ce sujet.
UPDATE mytable SET
fruit = CASE WHEN id=1 THEN 'orange' ELSE 'strawberry' END,
drink = CASE WHEN id=1 THEN 'water' ELSE 'wine' END,
food = CASE WHEN id=1 THEN 'pizza' ELSE 'fish' END
WHERE id IN (1,2);
Personnellement, en utilisant CASE WHEN THEN END
semble maladroit.
Vous pouvez coder cela en utilisant la fonction IF .
UPDATE mytable SET
fruit = IF(id=1,'orange','strawberry'),
drink = IF(id=1,'water','wine'),
food = IF(id=1,'pizza','fish')
WHERE id IN (1,2);
Essayez-le !!!
CAVEAT : CASE WHEN THEN END
n'est pratique que lorsqu'il s'agit de plusieurs valeurs (plus de 2)
INSERT ... ON DUPLICATE KEY UPDATE
Vous devrez écrire des conditions très compliquées si vous souhaitez mettre à jour plus de deux lignes. Dans ce cas, vous pouvez utiliser INSERT ... ON DUPLICATE KEY UPDATE
approche.
INSERT into `mytable` (id, fruit, drink, food)
VALUES
(1, 'orange', 'water', 'pizza'),
(2, 'strawberry', 'wine', 'fish'),
(3, 'Peach', 'jiuce', 'cake')
ON DUPLICATE KEY UPDATE
fruit = VALUES(fruit),
drink = VALUES(drink),
food = VALUES(food);