Union
將多個“存在”查詢合併到一個語句中
我試圖弄清楚如何在一個語句中檢查多個表中是否存在多行。
給定下表:
table table_one ======== id 'a' 'b' 'c' table table_two ======== id 'aa' 'bb' 'cc'
這行得通,
SELECT 1 from table_one where id = 'a'
和
SELECT 1 from table_two where id = 'aa'
作品
如何將它們組合成一個語句?
我試過了
SELECT 1 FROM table_one WHERE id = 'a' UNION SELECT 1 FROM table_two WHERE id = 'aa'
但這只是將結果合併到一列中,因此我無法判斷特定表是否缺少一行。
我想要的是這樣的結果行
table_one table_two table_three table_four ========= ========= =========== ========== 1 1 [null] 1
UNION
從整體結果中刪除重複的行,UNION ALL
將保留它們。要知道結果來自哪個表,請添加一個常量值:
SELECT 'one' as source, 1 FROM table_one WHERE id = 'a' UNION ALL SELECT 'two', 1 FROM table_two WHERE id = 'aa'