使用 SQLite 合并两个查询的结果
Combining the result of two queries using 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 |
并且我想找到与两个表不同的所有行。
这给出了 A 中不在 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 中不在 A 中的行:
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 |
尝试将除括号外的个体括起来,然后进行并集:
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
);
假设我有以下表格:
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 |
并且我想找到与两个表不同的所有行。
这给出了 A 中不在 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 中不在 A 中的行:
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 |
尝试将除括号外的个体括起来,然后进行并集:
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
);