SQL UNION
在 SQL 中,UNION 操作用于合并两个或多个 SELECT 语句的结果集,并且会自动去除重复的行。以下是 UNION 操作的基本语法和一些注意事项:
语法格式
SELECT column1, column2, ... FROM table1 WHERE conditions UNION SELECT column1, column2, ... FROM table2 WHERE conditions;
SELECT语句: 每个SELECT语句可以选择从一个或多个表中选择特定的列,并且可以带有WHERE条件来过滤结果。
UNION操作符: 将两个或多个SELECT语句的结果集合并在一起。
去重: UNION操作会自动去除重复的行,如果想保留重复行,可以使用UNION ALL。
注意事项
列数和数据类型: 每个SELECT语句中的列数和数据类型必须匹配。如果不匹配,通常会导致语法错误。
列名: 结果集中的列名是由第一个SELECT语句中的列名决定的。
顺序: UNION操作返回的结果集是无序的,如果需要有序的结果,可以在最外层的SELECT语句中使用ORDER BY子句。
性能考虑: UNION操作会对结果集进行排序和去重,因此在处理大量数据时可能会影响性能。
使用示例
假设有两张表 students 和 teachers,分别包含学生和老师的信息。我们可以使用UNION操作来合并两张表的姓名信息:
SELECT student_name AS name, 'Student' AS role FROM students UNION SELECT teacher_name AS name, 'Teacher' AS role FROM teachers;
在这个例子中,我们使用了别名 name 和 role 来表示合并结果中的列。role 列指示每行数据是学生还是老师。
UNION ALL
如果需要包含重复的行,可以使用UNION ALL:
SELECT column1, column2, ... FROM table1 UNION ALL SELECT column1, column2, ... FROM table2;
使用 UNION ALL 会将两个或多个 SELECT 语句的结果集合并在一起,不进行去重操作,因此效率可能会比 UNION 高,但返回的结果集中可能包含重复的行。
总结来说,UNION 操作是 SQL 中用于合并多个 SELECT 语句结果的强大工具,它能够简化查询复杂性并且有效地处理数据合并需求。