union
是 C/C++ 语言中的一个关键字,用于定义联合体数据类型,它允许在相同的内存位置存储不同的数据类型。UNION 用法详解
一、基本概念
UNION 是 SQL 中用于合并两个或多个 SELECT 语句结果集的操作符,它主要用于将来自不同表的数据组合成一个统一的结果集,从而简化数据分析和报告,默认情况下,UNION 会自动去除重复的行,只保留唯一的行,如果需要包含重复行,可以使用 UNION ALL。
二、基本用法
使用 UNION 的基本语法如下:
SELECT column1, column2, ... FROM table1 WHERE condition(s) UNION SELECT column1, column2, ... FROM table2 WHERE condition(s);
每个 SELECT 语句的列数和对应位置的数据类型必须相同,合并两个表中所有客户的姓名:
SELECT CustomerName FROM Customers UNION SELECT CustomerName FROM Suppliers;
三、使用 UNION ALL
UNION ALL 与 UNION 类似,但它不会去除重复的行,如果合并的结果集中存在重复的行,UNION ALL 会保留它们。
SELECT city FROM customers UNION ALL SELECT city FROM suppliers;
四、合并多表查询
UNION 可以用于合并两个以上的查询结果集,每个查询之间用 UNION 连接。
SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2 UNION SELECT column_name(s) FROM table3;
五、指定排序
UNION 的结果集默认不排序,如果想对合并后的结果进行排序,需要使用 ORDER BY 子句,并且只能放在所有 UNION 操作的最后。
(SELECT column_name(s) FROM table1) UNION (SELECT column_name(s) FROM table2) ORDER BY column_name;
六、使用别名
可以为 UNION 中的每个查询指定别名,使结果集更加清晰。
(SELECT column_name AS alias_name FROM table1) AS t1 UNION (SELECT column_name AS alias_name FROM table2) AS t2;
七、与子查询结合使用
UNION 可以与子查询结合使用,子查询可以是更复杂的查询。
(SELECT * FROM table1 WHERE condition1) UNION (SELECT * FROM (SELECT * FROM table2) AS subquery WHERE condition2);
八、使用 LIMIT 和 OFFSET
可以在 UNION 操作的每个查询中使用 LIMIT 和 OFFSET 来控制结果集的行数和偏移量。
(SELECT column_name(s) FROM table1 LIMIT 10) UNION (SELECT column_name(s) FROM table2 LIMIT 10 OFFSET 10);
九、注意事项
所有查询的列数必须相同。
相应列的数据类型必须兼容,不需要完全相同,但是必须是可以比较的。
UNION 的结果集不能指定列名,列名来自参与 UNION 的第一个查询。
对结果集进行排序只能使用一个 ORDER BY 子句,并且必须位于所有 UNION 操作之后。
十、示例表格及数据
假设我们有两个表:employees_china
和employees_usa
,其结构和数据如下:
CREATE TABLE employees_china ( E_ID int, E_Name varchar(50), Country varchar(50) ); CREATE TABLE employees_usa ( E_ID int, E_Name varchar(50), Country varchar(50) ); INSERT INTO employees_china (E_ID, E_Name, Country) VALUES (1, 'Alice', 'China'); INSERT INTO employees_china (E_ID, E_Name, Country) VALUES (2, 'Bob', 'China'); INSERT INTO employees_usa (E_ID, E_Name, Country) VALUES (1, 'Charlie', 'USA'); INSERT INTO employees_usa (E_ID, E_Name, Country) VALUES (2, 'David', 'USA');
使用 UNION 合并两个表中的所有员工:
SELECT E_ID, E_Name FROM employees_china UNION SELECT E_ID, E_Name FROM employees_usa;
使用 UNION ALL 保留重复的员工记录:
SELECT E_ID, E_Name FROM employees_china UNION ALL SELECT E_ID, E_Name FROM employees_usa;
使用 UNION 并按员工 ID 排序:
SELECT E_ID, E_Name FROM employees_china UNION SELECT E_ID, E_Name FROM employees_usa ORDER BY E_ID;
详细介绍了 SQL 中 UNION 的用法及其各种应用场景,希望能帮助大家更好地理解和使用 UNION。
各位小伙伴们,我刚刚为大家分享了有关“union用法”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!