簡體   English   中英

SQL是/否查詢,沒有控制流功能(IF,CASE,COALESCE等)

[英]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 ,如果你有在執法機關良好的飛行(因為內部查詢將返回YesNo ),並No如果只有不匹配(從內部查詢的結果將是只No )。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM