MySQL:Select 仅当字段值升序时

MySQL: Select only if field values are ascending

我有两个 table:路由和停止(一对多)。而且我还有输入数据:两个与 'stop' table 相关的位置 ID。每条路线都有自己的停靠站有序列表。我需要 select 基于具有起点和终点位置的停靠顺序(OLNY,其中 stop.order 是升序)的路线。

数据示例:

| ROUTE            |
--------------------
| id | name        |
--------------------
| 1 | first        |
--------------------
| 2 | second       |
--------------------

---------------------------
| STOP                    |
---------------------------
|id | order |loc_id|route_id|
----------------------------
| 1 | 1     |  1   |  1   |
---------------------------
| 2 | 2     |  2   |  1   |
---------------------------
| 3 | 3     |  3   |  1   |
---------------------------
| 4 | 3     |  1   |  2   |
---------------------------
| 5 | 2     |  2   |  2   |
---------------------------
| 6 | 1     |  3   |  2   |
---------------------------

用例:例如,我有 3 个位置:洛杉矶 (id=1)、芝加哥 (id=2) 和纽约 (id=3)。还有 2 条巴士路线:洛杉矶到纽约和纽约到洛杉矶。这意味着我根据每条路线的给定位置有 3 个巴士站,但它们的顺序相反。所以我需要创建 MySQL 查询到 select 具有开始和结束位置的适当路线。 例如,如果我以芝加哥为起点,以洛杉矶为终点,则查询必须 return 给我纽约到洛杉矶的路线。如果我有芝加哥和纽约的位置 - 它应该有洛杉矶到纽约的路线。

这是我能够创建的查询,但当然它不起作用

SELECT `route`.* 
FROM `route`
WHERE (SELECT stop.order FROM `stop` WHERE stop.locationId = 1) < (
        SELECT stop.order FROM `stop` WHERE stop.locationId = 2)

(其中1和2是位置ID输入数据)

如果我有 loc_id 1 和 2

,我需要得到这个结果
--------------------
| id | name        |
--------------------
| 1 | first        |
--------------------

因此,如果 loc_id = 2 和 1 我需要得到下一个结果:

--------------------
| id | name        |
--------------------
| 2 | second       |
--------------------

试试这个:

SELECT R.id, R.name
FROM Stop S
INNER JOIN Route R ON R.id = S.route_id
WHERE 
S.loc_id = 1 AND 
EXISTS (SELECT Id FROM Stop F WHERE S.route_id = F.route_id AND F.order > S.order AND F.loc_id = 2);