SQL合并查询结果

SQL合并查询结果

SQL合并查询结果

在数据库查询中,有时候需要将多个查询结果合并在一起进行展示。SQL提供了几种常见的方式来合并查询结果,包括UNION、UNION ALL、INTERSECT和EXCEPT。本文将详细讨论这几种合并查询结果的方法,并给出示例代码及运行结果。

UNION操作符

UNION操作符用于合并两个或多个SELECT语句的结果集,并去除重复的行。例如,假设有两个表A和B,我们要合并这两个表的结果集:

SELECT * FROM A
UNION
SELECT * FROM B;
SQL

这条SQL语句会将表A和表B的结果集合并在一起,并去除重复的行。如果想要保留重复的行,可以使用UNION ALL操作符。

下面是一个示例:

假设有如下两个表students和teachers:

students表:

id name age gender
1 Alice 20 Female
2 Bob 22 Male
3 Cathy 21 Female

teachers表:

id name age gender
1 David 30 Male
2 Emily 28 Female
3 Frank 35 Male

我们可以使用UNION操作符将这两个表的结果集合并在一起:

SELECT * FROM students
UNION
SELECT * FROM teachers;
SQL

运行结果:

id name age gender
1 Alice 20 Female
2 Bob 22 Male
3 Cathy 21 Female
1 David 30 Male
2 Emily 28 Female
3 Frank 35 Male

UNION ALL操作符

UNION ALL操作符用于合并两个或多个SELECT语句的结果集,并保留重复的行。与UNION操作符不同的是,UNION ALL不会去除重复的行。

SELECT * FROM A
UNION ALL
SELECT * FROM B;
SQL

下面是一个示例:

SELECT * FROM students
UNION ALL
SELECT * FROM teachers;
SQL

运行结果:

id name age gender
1 Alice 20 Female
2 Bob 22 Male
3 Cathy 21 Female
1 David 30 Male
2 Emily 28 Female
3 Frank 35 Male

INTERSECT操作符

INTERSECT操作符用于取两个查询结果集的交集。即返回同时存在于两个结果集的行。例如:

SELECT * FROM A
INTERSECT
SELECT * FROM B;
SQL

下面是一个示例:

假设有一个表students和一个表teachers,我们要找出同时存在于这两个表中的记录:

SELECT * FROM students
INTERSECT
SELECT * FROM teachers;
SQL

运行结果:

| id | name | age | gender |

EXCEPT操作符

EXCEPT操作符用于取第一个查询结果集减去第二个查询结果集的结果。即返回存在于第一个结果集但不存在于第二个结果集中的行。例如:

SELECT * FROM A
EXCEPT
SELECT * FROM B;
SQL

下面是一个示例:

假设有一个表students和一个表teachers,我们要找出students中存在但teachers中不存在的记录:

SELECT * FROM students
EXCEPT
SELECT * FROM teachers;
SQL

运行结果:

id name age gender
1 Alice 20 Female
2 Bob 22 Male
3 Cathy 21 Female

总结一下,SQL提供了四种合并查询结果的方式:UNION、UNION ALL、INTERSECT和EXCEPT。根据需求的不同,我们可以选择合适的操作符来完成查询。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册