Mysql 是否排除一列中的最大值用于检查另一列中的值的行?
很抱歉标题不清楚,但我不知道如何总结 我正在处理几个表中提供给我的一些静态列车时刻表数据。我试图显示所有停在特定车站的列车,不包括那些在指定车站结束的列车。例如,当列出所有停在尼宾车站的列车时,我不希望这些列车停在尼宾车站 有关表格如下: 行程-列出每天的所有行程。每次行程都有一个行程id,由一个或多个站点组成。它还包含一个trip_headsign列,显示列车的最终目的地,但作为文本而不是IDMysql 是否排除一列中的最大值用于检查另一列中的值的行?,mysql,group-by,left-join,max,Mysql,Group By,Left Join,Max,很抱歉标题不清楚,但我不知道如何总结 我正在处理几个表中提供给我的一些静态列车时刻表数据。我试图显示所有停在特定车站的列车,不包括那些在指定车站结束的列车。例如,当列出所有停在尼宾车站的列车时,我不希望这些列车停在尼宾车站 有关表格如下: 行程-列出每天的所有行程。每次行程都有一个行程id,由一个或多个站点组成。它还包含一个trip_headsign列,显示列车的最终目的地,但作为文本而不是ID +----------+------------+---------+---------------
+----------+------------+---------+-------------------------+--------------+----------+----------+
| route_id | service_id | trip_id | trip_headsign | direction_id | block_id | shape_id |
+----------+------------+---------+-------------------------+--------------+----------+----------+
| 1 | 1 | 1 | PRINCETON RAIL SHUTTLE | 1 | 603 | 1 |
| 1 | 2 | 2 | PRINCETON RAIL SHUTTLE | 1 | 603 | 2 |
+----------+------------+---------+-------------------------+--------------+----------+----------+
停车次数-列出每列火车的每一站。在同一次旅行中的所有站点都共享一个旅行id,所以这就是我留下的JOIN。此表还有一个名为stop_sequence的列,范围从1到n,其中n是该行程的总停车次数。列车在停车点发车,顺序=1。该值的范围为2到26
+---------+--------------+----------------+---------+---------------+-------------+---------------+---------------------+
| trip_id | arrival_time | departure_time | stop_id | stop_sequence | pickup_type | drop_off_type | shape_dist_traveled |
+---------+--------------+----------------+---------+---------------+-------------+---------------+---------------------+
| 1 | 21:15:00 | 21:15:00 | 24070 | 1 | 0 | 0 | 0 |
| 1 | 21:25:00 | 21:25:00 | 41586 | 2 | 0 | 0 | 2.5727 |
+---------+--------------+----------------+---------+---------------+-------------+---------------+---------------------+
这列火车只停两站。最后一个stop 41586是headsign列中列出的,注意它与stop_名称不匹配
+---------------+---------+---------+-------------------------+----------+----------------+
| stop_sequence | stop_id | trip_id | trip_headsign | block_id | departure_time |
+---------------+---------+---------+-------------------------+----------+----------------+
| 1 | 24070 | 1 | PRINCETON RAIL SHUTTLE | 603 | 21:15:00 |
| 2 | 41586 | 1 | PRINCETON RAIL SHUTTLE | 603 | 21:25:00 |
+---------------+---------+---------+-------------------------+----------+----------------+
+---------+----------------------------+-----------+-----------+------------+---------+
| stop_id | stop_name | stop_desc | stop_lat | stop_lon | zone_id |
+---------+----------------------------+-----------+-----------+------------+---------+
| 41586 | PRINCETON RAILROAD STATION | | 40.343398 | -74.659872 | 336 |
+---------+----------------------------+-----------+-----------+------------+---------+
所以,再一次,我想做的是显示一个列表,列出所有在特定车站停的列车,除了那些在相关车站终止的列车。我写的这个查询是在这个例子中,对于stop_id 105,即纽约佩恩车站:
选择停止顺序、trips.trip\u id、trip\u headsign、trips.block\u id、从铁路数据出发的时间。trips left join rail\u data.trips上的停止时间。trip\u id=停止时间。trip\u id,其中停止id='105'按出发时间asc排序
这将返回如下结果:
+---------------+---------+-----------------------+----------+----------------+
| stop_sequence | trip_id | trip_headsign | block_id | departure_time |
+---------------+---------+-----------------------+----------+----------------+
| 18 | 1342 | NEW YORK PENN STATION | 6600 | 05:43:00 |
| 1 | 1402 | SUMMIT | 6305 | 06:07:00 |
| 16 | 1328 | NEW YORK PENN STATION | 6604 | 06:34:00 |
| 1 | 1391 | SUMMIT | 6307 | 06:41:00 |
| 19 | 1360 | NEW YORK PENN STATION | 6908 | 06:47:00 |
+---------------+---------+-----------------------+----------+----------------+
在这种情况下,我只希望开往顶峰的火车出现。但请记住,我不能简单地说“停车顺序>1”在哪里,因为我想包括可能是第二站、第三站等的列车,而不是最后一站
提前感谢您的帮助 您可以查询stop\u时间,并检查其shape\u dist\u traveled==0,获取相应的行程id,然后使用此id查询行程表。因此,您必须添加一个,其中: 其中trips.trip\u id在中选择st.trip\u id from stop\u times st where st.shape\u dist\u traveled==0
附言:我假设shape_dist_traveled将给出火车行驶的距离不幸的是,shape_dist_traveled对于始发站仅为0,我不想排除这一点。