每个供应商的最大(价格)文章的SQL查询。无法理解背后的逻辑

时间:2017-12-16 19:23:19

标签: sql

此查询选择一个列表,其中包含供应商提供的最昂贵物品的名称和价格,包括提供商名称。

表格只是:

供应商:代码(PK) - 名称

文章:代码(PK) - 名称 - 价格 - 供应商(FK)

查询是:

SELECT A.NAME, A.PRICE, S.NAME FROM ARTICLES A, SUPPLIERS S 
WHERE A.SUPPLIER = S.CODE
AND A.PRICE = 
(
SELECT MAX(A.PRICE) 
FROM ARTICLES A 
WHERE A.SUPPLIER = S.CODE
)

请您帮我理解背后的逻辑吗?为什么这给了我每供应商的最高价格?

谢谢!

1 个答案:

答案 0 :(得分:1)

您的内部查询正在获取文章子集的最高价格 - 那些与从外部查询传入的supplier.code匹配的文章。所以内部查询说,“给我供应商X的最高价格。”

外部查询过滤联接列表,仅提供那些与内部查询结果匹配的记录 - 恰好等于最高价格的记录。如果多个记录等于供应商的最高价格,它将匹配外部列表中的多个记录。