在SQL中,UNION操作用于合并两个或多个SELECT语句的结果集。这些语句必须拥有相同数量的列,并且相应的列必须具有相似的数据类型。UNION操作会自动删除重复的行。如果你希望保留所有行(包括重复行),可以使用UNION ALL。
以下是UNION的基本用法:
```sql
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
```
这里有一些关键点需要注意:
1. 每个SELECT语句内必须拥有相同数量的列。
2. 相应的列必须具有相似的数据类型。
3. 使用UNION时,结果集中的重复行会被自动删除。如果你想要保留重复行,使用UNION ALL。
示例:假设我们有两个表,一个是"Students",另一个是"Teachers",它们都有一个名为"Name"的列。如果我们想要获取所有唯一的名字(无论它们是学生还是老师),我们可以使用以下查询:
```sql
SELECT Name FROM Students
UNION
SELECT Name FROM Teachers;
```
如果你想保留重复的名字(例如,一个老师可能以前是一个学生),你可以使用UNION ALL:
```sql
SELECT Name FROM Students
UNION ALL
SELECT Name FROM Teachers;
```
请注意,虽然UNION和UNION ALL都可以合并两个或多个查询的结果,但它们的主要区别在于是否删除重复的行。如果你确定不会有重复的行,或者你想要保留重复的行,那么使用UNION ALL可能会更高效一些,因为它不需要检查重复的行。