我有两个表,一个是产品表,另一个是提供相同产品的不同供应商的报价表。
表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');
但这给了我所有的机会。如对本查询有任何帮助,我们将不胜感激。
最佳答案
您需要两个查询:一个用于确定每个产品的最低价格,另一个用于选择与该最低价格相关的其他字段的父查询:
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)
这也有一个优势,即显示多个商店是否有相同的最低价格。
关于mysql - 在具有MIN值的两个表上进行MYSQL SELECT,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34212076/