【发布时间】:2017-12-02 18:18:48
【问题描述】:
首先,如果标题具有误导性,我想道歉。
我在mysql 中有一张名为products 的表:
+---------+-------+-----------+-------+
| name | price | date | brand |
+---------+-------+-----------+-------+
| apples | 2 | 02/12/17 | Tesco |
| apples | 1.95 | 28/11/17 | Aldi |
| apples | 2.5 | 29/11/17 | Lidl |
| bananas | 0.5 | 01/12/17 | Tesco |
| bananas | 0.7 | 29/11/17 | Aldi |
| bananas | 1 | 25/11/17 | Lidl |
+---------+-------+-----------+-------+
如果我想从这个表中SELECTMAX 价格,我会继续执行这个查询:
SELECT
products.name AS NAME,
MAX(products.price) AS MAX_PRICE
FROM products
GROUP BY products.name;
哪个会输出:
+---------+-----------+
| NAME | MAX_PRICE |
+---------+-----------+
| apples | 2.5 |
| bananas | 1 |
+---------+-----------+
但是,我还想在查询输出中包含相应的日期和品牌,如下所示:
+---------+-----------+----------+-------+
| NAME | MAX_PRICE | DATE | BRAND |
+---------+-----------+----------+-------+
| apples | 2.5 | 29/11/17 | Lidl |
| bananas | 1 | 25/11/17 | Lidl |
+---------+-----------+----------+-------+
MIN 在SELECT 语句中也是如此:
+---------+-----------+----------+-------+
| NAME | MAX_PRICE | DATE | BRAND |
+---------+-----------+----------+-------+
| apples | 1.95 | 28/11/17 | Aldi |
| bananas | 0.5 | 01/12/17 | Tesco |
+---------+-----------+----------+-------+
这怎么能写成MySQL?
【问题讨论】:
-
这是一个常见问题 请参阅greatest-n-per-group 标签,了解过去的许多问题以及解决方案。
标签: mysql sql select group-by greatest-n-per-group