当前位置: 首页 > 面试题库 >

在SQL查询中如何排序LEFT JOIN的顺序?

柴俊捷
2023-03-14
问题内容

好的,我尝试使用谷歌搜索来寻找诸如疯狂之类的答案,但是我无法解决此问题,因此我希望有人能够提供帮助。

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

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;


 类似资料:
  • 问题内容: 假设我有一个查询“ select * from子句,其中id在(0,2,5,1,3)中”,我实际上希望返回的行以它们在where子句中指定的相同顺序返回。ID的顺序将随查询的不同而改变,并且该顺序没有模式。 我知道可以更改数据模型,创建临时表等。但是请相信我,这些类型的解决方案在我的情况下将行不通。我也无法在应用程序代码中更改结果对象的顺序。 我还知道,不同的数据库引擎对事物的排序方式

  • 问题内容: 假设我将与关联的表存储如下(代表事件的时间戳): 这样我们可以说: 用户1具有ADBCB的事件序列 用户2具有事件序列BBAAC 我想针对这些用户回答的问题类型非常容易表达为事件序列的常规表达式,例如“哪些用户的事件序列与A. * B匹配?” 或“哪些用户的事件序列与A [^ C] * B [^ C] * D匹配?” 等等。 在此表结构上可以用来回答类似查询的SQL技巧或运算符是什么?

  • 问题内容: 我有这样的自定义订购需求: 我曾经想过用3个不同的选择查询的帮助下结合和。但是,我不能这样做,因为必须 在 和 之前 使用。 如何进行选择(或多个选择)以实现上面的自定义排序? 另一个解决方法可能会有所帮助,就是使此选择查询中返回的 第一条记录 成为最后一条记录,但是如何? 问题答案: 试试这个: 1亿个常量必须大于N。 这是一个简单的演示

  • 问题内容: 当我将以下Firebase数据库数据加载到tableView中时,数据按日期升序排序。如何通过降序排序(在顶部显示最新帖子)? 在Xcode中查询: JSON导出: 谢谢!! 编辑:下面的代码是整个解决方案,感谢Bawpotter 更新的查询: tableView cellForRowAtIndexPath Post.swift: 问题答案: 当Firebase将数据加载到tableV

  • 问题内容: 我有一个我无法解决的问题。我正在使用PHP通过数据库运行以下命令: 结果全部恢复正常,并且符合预期,但是我必须将其输入折线图中,但是当我这样做时,它们显然会反向显示,因为我有数据库按日期在DESC中返回它们,这意味着最新的将是第一个返回。 有没有一种方法可以在返回这些结果之后在将数据输入到图表之前反转它们的顺序。 这是完整的查询(请不要对使用mysql而不是mysqli进行评论,我没有

  • 问题内容: 如何在JDBI中使用SQL对象查询进行排序? 我想做类似的事情: 要么 问题答案: 我最近一直在探索与JDBI捆绑在一起的DropWizard,并很快遇到了同样的问题。不幸的是,JDBI的文档乏善可陈(JavaDoc和它的git存储库中的一些示例单元测试并没有单独解决),这令人失望。 这是我根据示例DAO在JDBI的Sql Object API中实现动态排序的结果: @ UseStri