使用 SQLite 组合两个查询的结果

Posted

技术标签:

【中文标题】使用 SQLite 组合两个查询的结果【英文标题】:Combining the result of two queries using SQLite 【发布时间】:2017-03-21 04:08:54 【问题描述】:

假设我有以下表格:

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 |

【问题讨论】:

您是否尝试对每个 EXCEPT 语句使用括号 () 是的,这给了我Error: near "(": syntax error 在外面使用SELECT * FROM 【参考方案1】:

尝试将个体括在括号中,然后进行联合:

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
);

【讨论】:

以上是关于使用 SQLite 组合两个查询的结果的主要内容,如果未能解决你的问题,请参考以下文章

Cordova SQLite - 从一系列 SELECT 查询中获取结果

使用java在sqlite中选择两个日期之间的行

SQLite INSERT SELECT 查询结果到现有表中?

查询案例的 SQlite listview 结果

19.Sqlite多表连接查询及聚合函数的应用

SQLite:如何将查询结果保存为 CSV 文件?