[英]SQL Yes/No query without control flow functions (IF,CASE,COALESCE etc)
我一直在嘗試找到一種無需使用控制流功能(IIF,ELSE,CASE,COALESCE,ISNULL,IFNULL等)就可以對查詢回答是/否的方法。 我希望我的查詢給我一個“是”的答案,如果某特定航空公司在兩個給定機場之間的給定日期有航班。 這是我到目前為止所做的
SELECT 'Yes' as Answer
FROM flights
WHERE flights.date = '2014-12-12' AND flights.routes_id IN (SELECT routes.id
FROM routes
INNER JOIN airlines
ON airlines.id = routes.airlines_id
WHERE airlines_id IN (SELECT airlines.id
FROM airlines
WHERE airlines.name='Olympic Airways')
AND routes.source_id = (SELECT airports.id
FROM airports
WHERE airports.name like '%Venizelos%')
AND routes.destination_id=(SELECT airports.id
FROM airports
WHERE airports.name like 'London Gatwick'))
UNION
SELECT 'No' AS Answer
FROM flights
WHERE flights.date = '2014-12-12' AND flights.routes_id NOT IN (SELECT routes.id
FROM routes
INNER JOIN airlines
ON airlines.id = routes.airlines_id
WHERE airlines_id IN (SELECT airlines.id
FROM airlines
WHERE airlines.name = 'Olympic Airways')
AND routes.source_id = (SELECT airports.id
FROM airports
WHERE airports.name like '%Venizelos%')
AND routes.destination_id=(SELECT airports.id
FROM airports
WHERE airports.name like 'London Gatwick'))
問題是,當我運行查詢時,它會同時打印“是”和“否”,而當它只打印這兩個之一時。 如何解決?
發生這種情況的原因是,那天將有該航空公司的航班飛往其他機場,也有其他航空公司的航班往返該機場。
將您的查詢放在另一個查詢中,例如:
SELECT Max(Answer)
from (
your query from the question
)
這將返回Yes
,如果你有在執法機關良好的飛行(因為內部查詢將返回Yes
和No
),並No
如果只有不匹配(從內部查詢的結果將是只No
)。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.