gpt4 book ai didi

MySQL:仅当字段值升序时才选择

转载 作者:行者123 更新时间:2023-11-29 15:57:21 26 4
gpt4 key购买 nike

我有两个表:路线和停止(一对多)。我还有输入数据:两个与“停止”表相关的位置 ID。每条路线都有自己的有序停靠点列表。我需要根据具有起点和终点位置的停靠顺序(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 `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);

关于MySQL:仅当字段值升序时才选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56380775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com