我正在运行用于 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 时,我得到了纽约市。不应该是芝加哥吗?
我不确定我犯了什么错误,非常感谢任何帮助。
谢谢!
问题似乎出在
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;