2017-03-21 29 views
1

比方說,我有以下表的兩個查詢的結果:結合使用SQLite

Table A    Table B 
| a | b | c |  | a | b | c | 
|---|---|---|  |---|---|---| 
| a | b | c |  | a | b | c | 
| a | c | d |  | a | c | d | 
| c | d | e |  | a | b | c | 
| f | g | h |  | o | p | q | 
| a | a | a |  | a | b | c | 

,我想找到所有的兩個表中不同的行。

這讓我從一個不在B中的行:

SELECT a, b, c FROM A 
EXCEPT 
SELECT a, b, c FROM B; 

| a | b | c | 
|---|---|---| 
| a | a | a | 
| c | d | e | 
| f | g | h | 

,這給我的B不在一個行:

SELECT a, b, c FROM B 
EXCEPT 
SELECT a, b, c FROM A; 

| a | b | c | 
|---|---|---| 
| o | p | q | 

所以將二者結合起來我試着用

SELECT a, b, c FROM A 
EXCEPT 
SELECT a, b, c FROM B 
UNION 
SELECT a, b, c FROM B 
EXCEPT 
SELECT a, b, c FROM A; 

,但它仍然只給了我從B.

如何從兩個表中獲取行,如下所示?

| a | b | c | 
|---|---|---| 
| a | a | a | 
| c | d | e | 
| f | g | h | 
| o | p | q | 
+0

你試試用括號''每個EXCEPT語句()? –

+0

是的,這給了我'錯誤:近「(」:語法錯誤「。 – BadCash

+0

只需使用'SELECT * FROM'外部 –

回答

2

嘗試封閉個別除了在括號,然後做工會:

select * from (
    select a, b, c from a 
    except 
    select a, b, c from b 
) 
union 
select * from (
    select a, b, c from b 
    except 
    select a, b, c from a 
); 
+0

@BadCash - 更新。現在應該工作 – GurV

+0

很好,謝謝! – BadCash