代码示例:
UPDATE tbl_country SET price = CASE
WHEN code = 1 THEN 123;
WHEN code = 2 THEN 456;
…
END
WHERE code IN (1,2,…)
AND id = 222
一个常见的建议是不要使用此类构造,因为它们效率低下,而是通过事务命令集中的单个命令进行更新,例如,here。
请解释列出用逗号分隔的连续更新是否更有效,例如,像这样:
$query =
"UPDATE tbl_country SET price = 123 WHERE code = 1 AND id = 222;
UPDATE tbl_country SET price = 456 WHERE code = 2 AND id = 222;
...
";
升级版:
要求非常不同。第一种,不指定条件
where
,可能更新所有记录;第二种,最有可能由主键进行选择,更新了3条记录。很难理解你想做什么,但我会给你一些提示。一般来说,
case
没有什么低效的,因为它适用于已经选择的行,如果你需要将一个值映射到另一个值,那么就使用它。要对效率做出假设,请学习解释,并学习如何分析您的应用程序。
避免过早优化。在需要更新一次表中的值的情况下(每六个月一次,我们决定用测试代替测试),效率就不是那么重要了。