異なる値を持つ複数の行を更新する方法を理解しようとしていますが、取得できません。解決策はどこにでもありますが、私には理解するのが難しいようです。
たとえば、1つのクエリへの2つの更新:
UPDATE mytable SET fruit='orange', drink='water', food='pizza' WHERE id=1;
UPDATE mytable SET fruit='strawberry', drink='wine', food='fish' WHERE id=2;
CASE WHEN .. THEN ... ENDの動作と使用方法がわかりません。
誰かがこれを手伝ってくれるだろうか。
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);
個人的には、CASE WHEN THEN END
不器用に見えます。
IF function を使用してこれをコーディングできます。
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);
試してみてください!!!
警告 : CASE WHEN THEN END
は、複数の値(2つ以上)を処理する場合にのみ便利です
INSERT ... ON DUPLICATE KEY UPDATE
3つ以上の行を更新する場合は、非常に複雑な条件を記述する必要があります。そのような場合、INSERT ... ON DUPLICATE KEY UPDATE
アプローチを使用できます。
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);