首先,如果標題具有誤導性,我想表示歉意。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]標籤。 –