首页 > 解决方案 > 构造一个 SQL 查询,其中包含来自单个表的两条记录的结果

问题描述

我不熟悉 SQL。

我有巴士时刻表。主表bus_races具有以下列:id、race_id、station_idtime。每场巴士比赛都有其途中每个巴士站的记录。

例如

id      race    station time
8132    1       1       05:31:00
8133    1       2       05:40:00
8134    1       4       05:50:00
8135    2       2       06:50:00
8136    2       4       06:55:00
8137    2       5       07:15:00

这意味着公交路线 1 有三个站点:站点 1 在 5.31、站点 2 在 5.40、站点 4 在 5.50,并且公交路线有站点​​:站点 2 在 6.50、站点 4 在 6.55、站点 5 在 7.15。

... ETC

我如何构造一个查询,它返回在第 2 站和第 6 站停止的所有比赛的race_id,第 2 站必须早于第 6 站。

标签: sqlpostgresql

解决方案


select a.race_id 
from bus_races a join bus_races b 
on a.race_id = b.race_id and a.station_id = 2 and b.station_id = 6
where a.time < b.time

推荐阅读