2014-09-01 58 views
0

我有3個表格a,b和c。我想(select * from a intersect select * from b intersect select * from c) union (select * from a intersect select * from b) 這使錯誤「(」語法錯誤 無「()」,它工作正常,但它無法給出正確的結果。如何在sqlite中獲得3個表的聯合?

回答

0

圓括號中的SELECT是子查詢,但compound queries必須由「正常」查詢構建。

使用圓括號族化合物運營商是正確的,但你必須添加一個單獨的選擇在頂層:

SELECT * FROM (SELECT * FROM a 
       INTERSECT 
       SELECT * FROM b 
       INTERSECT 
       SELECT * FROM c) 
UNION 
SELECT * FROM (SELECT * FROM a 
       INTERSECT 
       SELECT * FROM b) 

(注:這種結構實際上並不意義;(A  ⋂ 乙 ⋂  C) ⋃ (A  ⋂  B)是與A相同 ⋂  B.)

+0

感謝您的幫助。 – 2014-09-01 08:56:00

-1
(select * from a) 
    union 
((select * from b) minus (select * from a)) 
    union 
((select * from c) minus ((select * from a) union (select * from b))) 

第一部分是表。 第二部分是B表除了重疊表。 第三部分是除與表或表b重疊表C。 聯盟這三個部分的是三個表的聯合。

三個tabels(圓圈)Ven的圖可以幫助理解。

+0

這不是有效的SQL。 – 2014-09-01 07:34:54

相關問題