gpt4 book ai didi

mysql - 将多条sql更新语句合二为一

转载 作者:行者123 更新时间:2023-11-29 04:33:30 25 4
gpt4 key购买 nike

我有以下三个更新语句:

UPDATE mx m JOIN main_territorypricingavail a USING (tp_id) 
SET sd_price = a.price WHERE a.code = 'SDBUY';

UPDATE mx m JOIN main_territorypricingavail a USING (tp_id)
SET hd_price = a.price WHERE a.code = 'HDBUY';

UPDATE mx m JOIN main_territorypricingavail a USING (tp_id)
SET uhd_price = a.price WHERE a.code = 'UHDBUY';

是否可以将这三者合二为一?

最佳答案

您可以在此处使用 CASE 表达式在单个更新中执行此操作:

UPDATE mx m
INNER JOIN main_territorypricingavail a
USING (tp_id)
SET
sd_price = CASE WHEN a.code = 'SDBUY' THEN a.price ELSE sd_price END,
hd_price = CASE WHEN a.code = 'HDBUY' THEN a.price ELSE hd_price END,
uhd_price = CASE WHEN a.code = 'UHDBUY' THEN a.price ELSE uhd_price END;

从性能的角度来看,如果 MySQL 注意到值不会更改,则不会在更新中将值覆盖到列/记录。因此,上面经常发生的 ELSE 条件的惩罚可能并不像看起来那么糟糕(see here 了解更多信息)。

关于mysql - 将多条sql更新语句合二为一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51869609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com