好的,我尝试用谷歌搜索疯狂的答案,但我无法解决这个问题,所以我希望有人能够提供帮助。
假设我有一个用户表,非常简单的表:
id | userName
3 Michael
4 Mike
5 George
我还有另一张关于他们的汽车和价格的表格。
id | belongsToUser | carPrice
1 4 5000
2 4 6000
3 4 8000
现在我需要做的是这样的事情(随意重写):
SELECT
`userName`,
`carPrice`
FROM `users`
LEFT JOIN `cars`
ON cars.belongsToUser=users.id
WHERE `id`='4'
返回:
Mike | 5000
但我需要某个用户最贵的车,而不是找到的第一个条目。
所以问题:如何将 LEFT JOIN 表设置为按 carPrice、DESC 排序?
最佳答案
尝试将 MAX
与 GROUP BY
一起使用。
SELECT u.userName, MAX(c.carPrice)
FROM users u
LEFT JOIN cars c ON u.id = c.belongsToUser
WHERE u.id = 4;
GROUP BY u.userName;
GROUP BY
group by 子句用于根据 group by 列的唯一组合将所选记录分成组。然后,这允许我们使用将依次应用于每组记录的聚合函数(例如 MAX、MIN、SUM、AVG...)。数据库将为每个分组返回一条结果记录。
例如,如果我们在这样的表中有一组表示温度随时间和位置变化的记录:
Location Time Temperature
-------- ---- -----------
London 12:00 10.0
Bristol 12:00 12.0
Glasgow 12:00 5.0
London 13:00 14.0
Bristol 13:00 13.0
Glasgow 13:00 7.0
...
那么如果我们想通过位置找到最高温度,那么我们需要将温度记录分成多个组,其中特定组中的每个记录具有相同的位置。然后我们想找到每组的最高温度。执行此操作的查询如下:
SELECT Location, MAX(Temperature)
FROM Temperatures
GROUP BY Location;
https://stackoverflow.com/questions/5355585/