基于Discount表数据关联Products与Price表的SQL实现问题
可行实现方案
共有两种常用实现方式,均可以满足需求:
方式1:WHERE子句加IN子查询(符合你提到的嵌套约束思路)
你原来的逻辑只需要额外加一行WHERE过滤条件即可,注意你原始SQL里的表名Product要补全为Products,带特殊符号的字段Ref#建议加反引号避免语法报错:
SELECT * FROM Products AS a LEFT JOIN Price AS b ON a.`Ref#` = b.`Ref#` WHERE a.ProductID IN (SELECT ProductID FROM Discount)
方式2:INNER JOIN关联Discount表(数据量大时性能更优)
直接通过内连接提前过滤掉Discount中不存在的ProductID,再关联Price表,执行结果和方式1完全一致:
SELECT * FROM Products AS a INNER JOIN Discount AS c ON a.ProductID = c.ProductID LEFT JOIN Price AS b ON a.`Ref#` = b.`Ref#`
两种方案最终都会过滤掉ProductID为B5678的记录,仅保留Discount中存在的ProductID对应的关联结果。
内容的提问来源于stack exchange,提问作者2020db9
相关产品推荐
相关产品推荐

