我有两个表,一个是产品表,另一个是提供相同产品的不同供应商的报价表。
表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/

10-13 08:49