gpt4 book ai didi

sql - 相同的查询给出不同的结果

转载 作者:搜寻专家 更新时间:2023-10-30 19:52:38 24 4
gpt4 key购买 nike

因此,对于学校的作业,我们必须从数据库中提取计数。问题如下,

--19) 有多少个包含“Europe”的时区名称中的机场被用作一条航线的源机场 (source_airport_id),该航线的飞机尾迹为“M”或“L”

这是我想出的代码,

SELECT count(DISTINCT airports.id) FROM airports WHERE timezone_name LIKE '%Europe%' AND id IN
(SELECT source_airport_id FROM routes WHERE id IN
(SELECT id FROM route_aircrafts WHERE aircraft_id IN
(SELECT id FROM aircrafts WHERE wake_size IN ('M', 'L'))));

它返回了 544,而教授的答案返回了 566。

SELECT count (DISTINCT airports.id)
FROM airports, routes, route_aircrafts, aircrafts

WHERE airports.id = routes.source_airport_id
AND routes.id = route_aircrafts.route_id
AND aircrafts.id = route_aircrafts.aircraft_id

AND airports.timezone_name LIKE'%Europe%'
AND aircrafts.wake_size IN ('M', 'L'); --566

对我来说,这两个应该做同样的事情,我不明白为什么答案不同。

最佳答案

要在您的查询中获得相同的答案,您需要:

SELECT count(DISTINCT airports.id) FROM airports WHERE timezone_name LIKE '%Europe%' AND id IN
(SELECT source_airport_id FROM routes WHERE id IN
(SELECT route_id FROM route_aircrafts WHERE aircraft_id IN
(SELECT id FROM aircrafts WHERE wake_size IN ('M', 'L'))));

您使用了主 ID 字段而不是外键 route_id。您得到了大致相似的结果,因为值中肯定有明显的重叠。

关于sql - 相同的查询给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47818742/

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