2024年09月20日 SQL把两个查询结果拼接 极客笔记
在日常的数据库查询操作中,我们经常需要将两个查询结果拼接在一起,以便后续进行进一步的分析或展示。在SQL语言中,我们可以使用UNION操作符来实现这个目的。UNION操作符将多个SELECT语句的结果组合在一起,去除重复的行并返回唯一值。
UNION操作符用于组合两个或多个SELECT语句的结果集。语法如下:
SELECT 列名1, 列名2
FROM 表名1
WHERE 条件
UNION
SELECT 列名1, 列名2
FROM 表名2
WHERE 条件
注意:
假设我们有两个表students
和teachers
,它们的数据如下:
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操作符,还有一个类似的操作符叫做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/