mysql - SQL高级过滤

标签 mysql sql set

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

enter image description here

此表用于 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/

相关文章:

php - Foreach 来自数组的 mysql 查询,然后来自第一个数组的第二个查询

mysql - 为什么我的 SQL 语句显示的是函数名?

mysql - 我一定要使用 SUM() 进行条件聚合吗?

c++ - set 如何与唯一键一起使用,但在 C++ 中具有等效的键值?

c++ - std::set C++ 的高效插入技术

php - 使用 CkEditor 显示保存在数据库中的文本(HTML)

MySQL CrossTab 结果包含非不同列

java - 无法进行交易调用

sql - 使用 gorm 插入数据时,检查不存在相同

java - 在Java中按大小组织一组集合