union与union all区别举个具体的sql案例
时间: 2023-11-16 11:54:02 浏览: 138
union和union all都是用于合并两个或多个select语句的结果集的操作符,但它们之间有一个重要的区别:union会自动去重,而union all不会。
举个具体的SQL案例:
假设我们有两个表,一个是学生表(students),一个是教师表(teachers),它们的结构如下:
students表:
| id | name | age | gender |
|----|-------|-----|--------|
| 1 | Alice | 18 | F |
| 2 | Bob | 19 | M |
| 3 | Carol | 20 | F |
teachers表:
| id | name | age | gender |
|----|---------|-----|--------|
| 1 | Mr. Lee | 30 | M |
| 2 | Ms. Liu | 35 | F |
现在我们想要将这两个表中的所有人员信息合并成一个结果集,可以使用以下SQL语句:
1. 使用union操作符:
```
SELECT name, age, gender FROM students
UNION
SELECT name, age, gender FROM teachers;
```
执行以上SQL语句后,得到的结果集如下:
| name | age | gender |
|---------|-----|--------|
| Alice | 18 | F |
| Bob | 19 | M |
| Carol | 20 | F |
| Mr. Lee | 30 | M |
| Ms. Liu | 35 | F |
可以看到,使用union操作符后,结果集中自动去重,去掉了两个表中重复的gender列为F的记录。
2. 使用union all操作符:
```
SELECT name, age, gender FROM students
UNION ALL
SELECT name, age, gender FROM teachers;
```
执行以上SQL语句后,得到的结果集如下:
| name | age | gender |
|---------|-----|--------|
| Alice | 18 | F |
| Bob | 19 | M |
| Carol | 20 | F |
| Mr. Lee | 30 | M |
| Ms. Liu | 35 | F |
可以看到,使用union all操作符后,结果集中保留了两个表中所有的记录,没有去重。
阅读全文