gpt4 book ai didi

php - 如何改进 MySQL 中的 IF 语句?

转载 作者:行者123 更新时间:2023-11-28 23:52:51 24 4
gpt4 key购买 nike

考虑mysql

SELECT If(
(SELECT `price` FROM `prices` AS `B` WHERE `A`.`Item_ID` = `B`.`Item_ID`)<5,
5,
(SELECT `price` FROM `prices` AS `B` WHERE `A`.`Item_ID` = `B`.`Item_ID`)
) AS `Item_Price'
FROM `items` AS `A`

它曾经从 items 表中的每个项目的 prices 表中查找价格,如果价格小于 5,则为 5。问题在于,如果 IF 语句为假,即价格大于或等于 5,则它会再次搜索相同的价格,这可能会减慢页面速度。有没有办法改善这个?

最佳答案

您可以使用简单的 LEFT JOIN 代替子查询:

SELECT If(COALESCE(`price`, 0) < 5, 5, `price`) AS `Item_Price' 
FROM `items` AS `A`
LEFT JOIN `prices` AS `B` ON `A`.`Item_ID` = `B`.`Item_ID`

这假设 items 和基于 Item_IDprices 之间存在一对一的关系。如果您的初始查询运行没有问题并且您的子查询仅返回一个标量值,那么这种一对一关系确实存在。

关于php - 如何改进 MySQL 中的 IF 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32335513/

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