我有这个SQL:
SELECT itemId, parentId, value FROM item ORDER BY value DESC
正确返回:
+--------+------------------+
| itemId | parentId | value |
+--------+------------------+
| 1 | 5 | 500 |
| 4 | 1 | 500 |
| 2 | 5 | 10 |
| 5 | 1 | 10 |
| 3 | 5 | 0 |
| 6 | 1 | 0 |
+--------+----------+-------+
我尝试添加“GROUP BY parentId”,但这似乎选择了两个随机项,忽略了ORDER BY子句:
+--------+------------------+
| itemId | parentId | value |
+--------+------------------+
| 2 | 5 | 10 |
| 6 | 1 | 0 |
+--------+----------+-------+
我应该使用什么SQL来仅返回每个parentId具有最高值的项目?:
+--------+------------------+
| itemId | parentId | value |
+--------+------------------+
| 1 | 5 | 500 |
| 4 | 1 | 500 |
+--------+----------+-------+
答案 0 :(得分:1)
对于每个itemId
,只有在value
为其MAX
的{{1}}时才选择它:
parentId
返回:
SELECT itemId, parentId, value
FROM item i
WHERE value = (SELECT MAX(value)
FROM item t
WHERE t.parentId = i.parentId)
<强> DEMO 强>
答案 1 :(得分:1)
我相信这个问题在之前的类似问题中得到了回答:
How can I SELECT rows with MAX(Column value), DISTINCT by another column in SQL?