具有MIN值的两个表上的MYSQL SELECT

时间:2015-12-10 21:28:37

标签: mysql join min

我有两个表,一个是产品表,另一个是提供相同产品的不同供应商的产品表。

表1:

sku   name
----|-----
a   | Iphone
b   | Galaxy 5
c   | Nexus 6

表2:

sku   price   vendor
----|-------|--------
a   | 5.00  | storeX
a   | 6.00  | storeY
a   | 7.00  | storeZ
b   | 15.00 | storeP
b   | 20.00 | storeQ
b   | 30.00 | storeR
c   | 11.00 | storeD
c   | 12.00 | storeF
c   | 13.00 | storeG

我正在尝试在这些表上运行SELECT,这样我就可以获得每个项目的最低报价。所以我的结果是:

sku   price    vendor
----|--------|--------
a   | 5.00   | storeX
b   | 15.00  | storeP
c   | 11.00  | stored

我试过SELECT table1.sku,table2.price FROM table2 JOIN table1 ON table2.sku = table1.sku WHERE table2.sku IN ('a','b','c'); 但那只是给我所有的报价。欢迎任何有关此查询的帮助。

1 个答案:

答案 0 :(得分:1)

您需要两个查询:一个用于确定每个产品的最低价格,然后是父查询以选择与该最低价格相关的其他字段:

SELECT table2.*, table1.name
FROM table2
LEFT JOIN  (
   SELECT MIN(price) AS min, sku
   FROM table2
   GROUP BY sku
) AS child ON ((table2.price = child.min) AND (table2.sku = child.sku))
LEFT JOIN table1 ON (table2.sku = table1.sku)

如果多家商店的最低价格相同,这也有好处。