首先,如果标题具有误导性,我想表示歉意。MYSQL - 按名称分组,并包含结果中其他列的相应值
我有mysql
表命名产品:
+---------+-------+-----------+-------+
| 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 |
+---------+-------+-----------+-------+
如果我想SELECT
从该表中MAX
价格,我会继续前进,执行这个查询:
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 |
+---------+-----------+----------+-------+
同样将在SELECT
语句MIN
做:
+---------+-----------+----------+-------+
| NAME | MAX_PRICE | DATE | BRAND |
+---------+-----------+----------+-------+
| apples | 1.95 | 28/11/17 | Aldi |
| bananas | 0.5 | 01/12/17 | Tesco |
+---------+-----------+----------+-------+
怎么可以这样写在MySQL
?
这是一个常见问题有关解决方案的许多过去的问题,请参见[tag:greatest-n-per-group]标签。 –