SQL ORDER BY 和 LIMIT BY 无法按预期工作

问题描述 投票:0回答:1

我正在运行用于 CS50 的 SQL 作业之一的部分代码。在下面的代码中:我试图列出一个城镇的目的地城市,并按出发时间的升序对它们进行排序。

这是代码片段:

SELECT city
FROM airports
WHERE id IN (
    SELECT destination_airport_id
    FROM flights
    WHERE year = 2021 AND month = 7 AND day = 29 AND origin_airport_id = (
        SELECT id
        FROM airports
        WHERE city = "Fiftyville"
    )
    ORDER by hour
)

这是我得到的输出。这个顺序不正确。

+---------------+
|     city      |
+---------------+
| Chicago       |
| New York City |
| Boston        |
| Tokyo         |
| San Francisco 

当我在按小时排序后的代码片段中添加 LIMIT 1 时,我得到了纽约市。不应该是芝加哥吗?

我不确定我犯了什么错误,非常感谢任何帮助。

谢谢!

sql cs50
1个回答
0
投票

问题似乎出在

ORDER BY
子句的位置上。在您的查询中,
ORDER BY
子句位于检索destination_airport_id的子查询内。这意味着排序应用于destination_airport_id 值,而不是城市的最终结果集。

SELECT city
FROM airports
WHERE id IN (
    SELECT destination_airport_id
    FROM flights
    WHERE year = 2021 AND month = 7 AND day = 29 AND origin_airport_id = (
        SELECT id
        FROM airports
        WHERE city = "Fiftyville"
    )
)
ORDER BY hour;
© www.soinside.com 2019 - 2024. All rights reserved.