Mysql SQL查询:选择特定项后的所有引用
我有以下数据库表,其中包含有关公共交通系统的信息:Mysql SQL查询:选择特定项后的所有引用,mysql,sql,Mysql,Sql,我有以下数据库表,其中包含有关公共交通系统的信息: 车站(id、名称) 骑乘设施(id、线路名称) RideStop(rideId、stationId、sequenceNumber、到达时间、离开时间) RideStop具有对Ride和Station的引用。当按sequenceNumber订购RideStops时,您可以获得此特定乘坐的路径 我需要得到从特定车站出发的所有游乐设施的路径。 我可以通过执行 select * from ridestop rs where rs.ride in
- 车站(id、名称)
- 骑乘设施(id、线路名称)
- RideStop(rideId、stationId、sequenceNumber、到达时间、离开时间)
select *
from ridestop rs
where rs.ride in (
SELECT ride FROM ttm.ridestop where stationid = 8503000
)
然而,我不在乎一辆车从哪里来,只在乎它去哪里
问题:
如何将结果仅限于骑乘设施的剩余部分,从站点8503000开始?以下查询使用子查询来查询骑乘设施上每个站点的序列号。然后将其连接回骑乘站,从骑乘开始或之后的序列号中选择所有内容
select rs.*
from ridestop rs join
(SELECT ride, rs.sequenceNumber
FROM ride r join
ridestop rs
on r.ride = rs.ride
where stationid = 8503000
) r
on rs.ride = r.ride and
rs.sequenceNumber >= r.sequenceNumber
order by rs.ride, rs.sequenceNumber
如果StationId是递增顺序。。下面的查询有效
SELECT *
FROM ridestop rs
WHERE rs.ride IN (SELECT ride
FROM ttm.ridestop
WHERE ( stationid = 8503000
AND stationid > 8503000 ))
这很好,但电台不一定是按递增顺序排列的。这些线纵横交错在车站网络上,应该是“WHERE(stationid=8503000或stationid>8503000)”?我认为这是正确的方向,但这个查询返回了很多疑问。似乎它将每条记录乘以它的序列号(X行的前4行显示4次)毫无疑问。子查询中的联接应该是on-ride和ridestop,而不是ridestop和ridestop。我解决了这个问题。谢谢,这正是我想要的。如果不需要骑乘设施表中的数据,则可以通过直接连接到骑乘设施顶部表来替换内部子查询。如果车站不是按照下面所示的递增顺序,如何确定“骑乘设施的剩余部分”?特别是正如你上面所说的“按序列号订购骑乘车顶”给出了特定骑乘的路径……我认为你混淆了车站ID和序列号。站点ID是“随机”的,但RideStop记录的序列数是一个不断增加的序列。因此,如果您获取特定站点的RideStop记录,您将获得经过该站点的游乐设施。现在,如果您获取sequenceNumber更高的站点8503000的所有RideStop记录,并按sequenceNumber进行排序,您将获得剩余路径。