在数据库分析或数据管理中,经常需要将来自不同查询或表的多个 SQL 检索结果合并为一个综合结果集。将两个 SQL 检索结果相加是一种常见的操作,可用于汇总数据、生成报告或执行其他数据分析任务。
连接运算符
要相加两个 SQL 检索结果,可以使用连接运算符,例如 UNION、UNION ALL 和 INTERSECT。这些运算符将两个结果集组合成一个新的结果集,根据指定的条件。
UNION:
将两个结果集中的所有行组合成一个新的结果集,包括重复行。例如:
sql
SELECT * FROM table1
UNION
SELECT * FROM table2;
UNION ALL:
与 UNION 类似,但它不会删除重复行。因此,新结果集可能包含重复行。例如:
sql
SELECT * FROM table1
UNION ALL
SELECT * FROM table2;
INTERSECT:
仅返回两个结果集中的交集。换句话说,它只返回出现在两个结果集中的行。例如:
sql
SELECT * FROM table1
INTERSECT
SELECT * FROM table2;
示例
假设我们有两个表, table1 和 table2 ,它们都包含以下列:
id | name | age
以下查询将返回两个表的 union:
sql
SELECT * FROM table1
UNION
SELECT * FROM table2;
结果集将如下所示:
id | name | age
1 | John | 25
2 | Mary | 30
3 | Bob | 22
4 | Jane | 28
5 | John | 25
6 | Mary | 30
正如你所看到的,重复行已包含在结果集中。
要返回两个表的交集,我们可以使用以下查询:
sql
SELECT * FROM table1
INTERSECT
SELECT * FROM table2;
结果集将如下所示:
id | name | age
1 | John | 25
2 | Mary | 30
仅返回出现在两个结果集中的行。