我的数据库中有以下product
表。我希望按照product_name
的降序排列12月份添加了不同id
的所有产品的行。
id product_name qty month
1 Apple 20 Dec
2 Banana 40 Jan
3 Cherry 60 Jun
4 Apple 25 Dec
5 Banana 50 Dec
6 Papaya 20 Dec
7 Guava 34 Aug
8 Watermelon 55 Mar
9 Apple 75 Dec
10 Orange 32 Dec
结果表应如下所示:
id product_name qty month
10 Orange 32 Dec
9 Apple 75 Dec
6 Papaya 20 Dec
5 Banana 50 Dec
到目前为止,我已经提出了以下查询,但它并没有得到我需要的结果。
SELECT *
FROM product
WHERE month = "Dec"
GROUP BY product_name
ORDER BY id DESC
此查询的问题在于它获取Apple的第一行/记录而不是最后一行,如下表所示:
id product_name qty month
10 Orange 32 Dec
6 Papaya 20 Dec
5 Banana 50 Dec
1 Apple 20 Dec
任何人都可以帮我写一个正确的mysql查询。提前感谢您的帮助。
答案 0 :(得分:1)
您可以使用以下查询:
SELECT MAX(id), product_name
FROM product
WHERE month = "Dec"
GROUP BY product_name
获得最大id
每product_name
:
<强>输出:强>
max_id product_name
9 Apple
5 Banana
10 Orange
6 Papaya
使用上述查询作为派生表,您可以联接回原始表以获取其余字段:
SELECT t1.*
FROM product AS t1
INNER JOIN (
SELECT MAX(id) AS max_id, product_name
FROM product
WHERE month = "Dec"
GROUP BY product_name
) AS t2 ON t1.id = t2.max_id and t1.product_name = t2.product_name
ORDER BY t1.id