我试图了解如何使用不同的值更新多行,但我不明白。解决方案无处不在,但对我来说似乎很难理解。
例如,两个更新为 1 个查询:
UPDATE mytable SET fruit='orange', drink='water', food='pizza' WHERE id=1;
UPDATE mytable SET fruit='strawberry', drink='wine', food='fish' WHERE id=2;
Run Code Online (Sandbox Code Playgroud)
我不明白 CASE WHEN .. THEN ... END 的作用以及如何使用它。
想知道是否有人可以帮助我。
Rol*_*DBA 12
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);
Run Code Online (Sandbox Code Playgroud)
就个人而言,使用CASE WHEN THEN END看起来很笨拙。
您可以使用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);
Run Code Online (Sandbox Code Playgroud)
试一试 !!!
CAVEAT :CASE WHEN THEN END仅在处理多个值(超过 2 个)时才方便
小智 7
INSERT ... ON DUPLICATE KEY UPDATE如果要更新两行以上,则需要编写非常复杂的条件。在这种情况下,您可以使用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);
Run Code Online (Sandbox Code Playgroud)