sql - 每个左连接返回 1 个结果

标签 sql join filter left-join

目前我正在对两个表执行左连接。第一个表有一个 id 和一个人的名字,第二个表有一个 id,表 1 中的一个人的 id,然后是一个时间戳(他们最后一次飞行的时间)。

People                             Flights
id   |  name             id   |   person_id   | time
------------             ---------------------------
1       Dave              1         1          1284762115
2       Becky             2         1          1284787352
                          3         2          1284772629
                          4         2          1286432934
                          5         1          1289239480

当我执行左连接时,我得到了人员列表和他们的飞行时间,但我想要的只是人员列表及其最后一次飞行时间。

So SELECT p.id, p.name, f.time FROM People p LEFT JOIN Flights f ON p.id = f.person_id

返回

1 Dave  1284762115
1 Dave  1284787352
1 Dave  1289239480
2 Becky 1284772629
2 Becky 1286432934

我只想看看:

1 Dave  1289239480
2 Becky 1286432934

所以我只需要返回具有最高 f.id 或最高 f.time 的匹配项

最佳答案

SELECT
    p.id, p.name, MAX(f.time) AS LastFlight
FROM
    People p
    LEFT JOIN Flights f ON p.id = f.person_id
GROUP BY
    p.id, p.name

关于sql - 每个左连接返回 1 个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3739213/

相关文章:

sql - 如何在 SQL 中进行 regexp_replace ?

java - 如何编写一个能够有效处理大量记录的查询?

MySQL选择发件人和收件人之间的最后一次转换消息

mysql - 这是好的数据库规范化吗?

SQL Server ISNULL/Coalesce 仍然返回空列表

mysql - SQL 语句左连接,其中children 为null 或

php - 用于连接包含多行的多个表的 SQL 查询 - 正确的方法?

html - CSS 过滤器导致定位问题

ios - Swift iOS - 将数组过滤成类似对象的数组

git - 让 Git 对我的更改视而不见的更好方法