SQL关联子查询条件执行逻辑疑问:返回布尔值还是具体匹配?
你的SQL子查询逻辑解析
你写的这个是相关子查询,子查询里的CategoryId = p.CategoryId逻辑是这样的:
- 这里的
p.CategoryId是引用主查询(外层)当前行的CategoryId具体数值,不是布尔值TRUE/FALSE。 - 针对主查询的每一行,子查询会把
p.CategoryId替换成当前行的实际值,比如当前行CategoryId是1,子查询就变成:
SELECT avg(UnitPrice) FROM products WHERE CategoryID=1
而不是简化成WHERE (TRUE)那种全表统计的情况。
简单来说,这个子查询会跟着主查询的每一行走,每次都只统计和当前产品同类别下的所有产品均价,正好符合你“每个产品对应类别的平均单价显示在旁边”的需求。
内容的提问来源于stack exchange,提问作者Lyrk
相关产品推荐
相关产品推荐

