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