SQL把两个查询结果拼接

2024年09月20日 SQL把两个查询结果拼接 极客笔记

SQL把两个查询结果拼接

在日常的数据库查询操作中,我们经常需要将两个查询结果拼接在一起,以便后续进行进一步的分析或展示。在SQL语言中,我们可以使用UNION操作符来实现这个目的。UNION操作符将多个SELECT语句的结果组合在一起,去除重复的行并返回唯一值。

UNION 操作符

UNION操作符用于组合两个或多个SELECT语句的结果集。语法如下:

SELECT 列名1, 列名2
FROM 表名1
WHERE 条件
UNION
SELECT 列名1, 列名2
FROM 表名2
WHERE 条件

注意:

  • UNION操作符会自动去除重复的行
  • 要求两个SELECT语句返回的列数和数据类型必须一致

示例

假设我们有两个表studentsteachers,它们的数据如下:

students表:

id name age grade
1 张三 20 90
2 李四 21 95
3 王五 22 88

teachers表:

id name age subject
1 赵老师 30 数学
2 钱老师 35 英语
3 孙老师 40 物理

现在,我们要将students表和teachers表的姓名和年龄字段拼接在一起,并且按照姓名的顺序排列。我们可以使用以下SQL语句:

SELECT name, age
FROM students
UNION
SELECT name, age
FROM teachers
ORDER BY name;

运行以上SQL语句,我们将得到如下结果:

name age
张三 20
李四 21
王五 22
孙老师 40
赵老师 30
钱老师 35

可以看到,以上结果已经按照姓名的顺序排列,并且将students表和teachers表的姓名和年龄字段成功拼接在一起。

使用UNION ALL

除了UNION操作符,还有一个类似的操作符叫做UNION ALL。与UNION不同的是,UNION ALL会保留所有的行,不会去除重复的行。使用UNION ALL时,两个SELECT语句返回的列数和数据类型也必须一致。

示例

现在我们继续以students表和teachers表为例。我们将使用UNION ALL操作符将两个表的姓名和成绩字段拼接在一起,并且按成绩的降序排列。我们可以使用以下SQL语句:

SELECT name, grade
FROM students
UNION ALL
SELECT name, null as grade
FROM teachers
ORDER BY grade DESC;

运行以上SQL语句,我们将得到如下结果:

name grade
李四 95
张三 90
王五 88
钱老师 null
孙老师 null
赵老师 null

可以看到,使用UNION ALL操作符时,保留了所有的行,并将两个表的姓名和成绩字段拼接在一起。

总结

在SQL查询中,我们可以使用UNION操作符和UNION ALL操作符将多个查询结果拼接在一起,以便于后续的处理和分析。在使用这两个操作符时,需要注意查询结果的列数和数据类型必须一致,以及UNION操作符会去除重复的行,而UNION ALL保留所有的行。

本文链接:http://so.lmcjl.com/news/13505/

展开阅读全文