我有一个名为 route_location
的表,如下表所示:
此表用于 map 。有路由,每条路由都有一个唯一的routeID
。路线包含位置,位置在任何 route 出现的顺序由 orderID
定义。我想获取所有 route 的所有位置,它们位于特定的 locationID
之后(在我当前的例子中,11
),该信息由 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]
我该怎么做?我认为这与这篇文章有关: Advanced filter in SQL
非常感谢您!
更新:
The orderID of the locationID must be greater than the orderID of locationID=11 in the route
最佳答案
目前还不清楚,但您似乎要求将逻辑应用于订单集:返回所有数据 after 在同一路线上有一个 locationID = 11
以前的 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
)
关于mysql - SQL高级过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29691785/