Mysql SQL高级筛选

Mysql SQL高级筛选,mysql,sql,set,Mysql,Sql,Set,我有一个名为route_location的表,如下表所示: 这张桌子是用来放地图的。存在路由,每个路由都有一个唯一的routeID。路由包含位置,并且在任何路由中出现的位置顺序由orderID定义。我想获取所有路由中的所有位置,这些位置在我当前案例11中的特定位置ID之后,该信息由orderID提供 我想从orderID超过给定值的orderID的任意路由获取所有locationID。 我需要orderID大于locationID=11的orderID的所有位置 目前的答案是 locationI

我有一个名为route_location的表,如下表所示:

这张桌子是用来放地图的。存在路由,每个路由都有一个唯一的routeID。路由包含位置,并且在任何路由中出现的位置顺序由orderID定义。我想获取所有路由中的所有位置,这些位置在我当前案例11中的特定位置ID之后,该信息由orderID提供

我想从orderID超过给定值的orderID的任意路由获取所有locationID。 我需要orderID大于locationID=11的orderID的所有位置

目前的答案是

locationID=12,13,16  

[12,13 from routeID=1,

 16 from routeID=2, 

no data from routeID=3]
我该怎么做?我认为这与这个帖子有关:

提前非常感谢

更新:

locationID的orderID必须大于路由中locationID=11的orderID

试试这个

    SELECT *
    FROM route_location AS rl
    inner join route_location AS r2
    on rl.routeID = r2.routeID and  rl.orderID < r2.orderID and r2.locationID = 11
试试这个

    SELECT *
    FROM route_location AS rl
    inner join route_location AS r2
    on rl.routeID = r2.routeID and  rl.orderID < r2.orderID and r2.locationID = 11

目前还不清楚,但您似乎要求应用于订单集的逻辑:在同一路线上的前一个订单ID上存在locationID=11之后返回所有数据


目前还不清楚,但您似乎要求应用于订单集的逻辑:在同一路线上的前一个订单ID上存在locationID=11之后返回所有数据


我没有看到任何orderID>11?我想你的意思是locationid>11,对吗?你需要提供更多关于应用于预期输出的逻辑的信息。现在还不清楚你想达到什么目的。@AmeyaDeshpande谢谢你纠正我。@DamodarDahal你为什么不展示2-15。过滤条件是什么?我没有看到任何orderID>11?我想你的意思是locationid>11,对吗?你需要提供更多关于应用于预期输出的逻辑的信息。现在还不清楚你想达到什么目的。@AmeyaDeshpande谢谢你纠正我。@DamodarDahal你为什么不展示2-15。过滤条件是什么?routeID和orderID是完全不同的字段。它们是无法比较的。请参阅更新数据。routeID和orderID是完全不同的字段。它们是无法比较的。请参阅更新数据。
SELECT *
FROM route_location AS rl
WHERE EXISTS
 ( SELECT * 
   FROM route_location AS rl2
   WHERE rl.routeID = rl2.routeID -- on the same route
     AND rl.orderID < rl2.orderID -- any previous order
     AND rl2.locationID = 11      -- had a locationID of 11
 )