【问题标题】:MYSQL SELECT on two tables with MIN ValueMYSQL SELECT 在具有 MIN 值的两个表上
【发布时间】:2016-03-16 16:33:15
【问题描述】:

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

表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'); 但这只是给了我所有的报价。对此查询的任何帮助表示赞赏。

【问题讨论】:

    标签: mysql join min


    【解决方案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)
    

    这还具有显示多个商店是否具有相同最低价格的优点。

    【讨论】:

    • 我没有在原帖上写的一件事是我需要来自 table1 的一些数据,比如带有结果的产品名称。示例:sku price vendor name ----|--------|--------|---------- a | 5.00 | storeX | Iphone b | 15.00 | storeP | Galaxy 5 c | 11.00 | storeD | Nexus 6
    • 很简单,只需加入另一张桌子...固定答案。
    猜你喜欢
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    相关资源
    最近更新 更多