mysql - 如何在 SQL 查询中对 LEFT JOIN 的顺序进行排序?

好的,我尝试用谷歌搜索疯狂的答案,但我无法解决这个问题,所以我希望有人能够提供帮助。

假设我有一个用户表,非常简单的表:

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 排序?

最佳答案

尝试将 MAXGROUP 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/

相关文章:

mysql - 最好的 MySQL 性能调优工具?

php - 如何使用 Laravel 4 Eloquent 连接列?

mysql - INSERT ... 使用 WHERE 进行重复的 key 更新?

php - PDO fetchAll 将键值对分组到 assoc 数组中

mysql - 仅获取mysql中时间戳中的日期

mysql - 设计用户角色和权限系统的最佳实践?

php - 从字段不匹配条件的表中选择

mysql - 列计数与第 1 行的值计数不匹配

php - DateTime 类的对象无法转换为字符串

php - MySQL 删除多列