SQL集合操作用于组合两个或多个SQL SELECT语句。
集合操作的类型
- 联合 - Union
- 联合所有 - UnionAll
- 交集 - Intersect
- 差集 - Minus
联合 - Union
SQL Union操作用于组合两个或多个SQL SELECT查询的结果。
在union操作中,在应用UNION操作的两个表中,所有数据类型和列的数量必须相同。union操作从结果集中删除重复的行。
语法
SELECT column_name FROM table1
UNION
SELECT column_name FROM table2;
假设有两个表,第一个表:First 的结构和数据如下 -
| ID | NAME |
|---|---|
| 1 | Jack |
| 2 | Harry |
| 3 | Jackson |
第二个表:Second 的结构和数据如下 -
| ID | NAME |
|---|---|
| 3 | Jackson |
| 4 | Stephan |
| 5 | David |
Union的SQL查询如下:
SELECT * FROM First
UNION
SELECT * FROM Second;
执行查询后如下所示:
| ID | NAME |
|---|---|
| 1 | Jack |
| 2 | Harry |
| 3 | Jackson |
| 4 | Stephan |
| 5 | David |
2. 全联合 - Union All
Union All操作等于Union操作。它返回集合但不删除重复和排序数据。
语法:
SELECT column_name FROM table1
UNION ALL
SELECT column_name FROM table2;
示例: 使用上面的第一个和第二个表。
Union All查询语句如下:
SELECT * FROM First
UNION ALL
SELECT * FROM Second;
执行查询后结果如下所示:
| ID | NAME |
|---|---|
| 1 | Jack |
| 2 | Harry |
| 3 | Jackson |
| 3 | Jackson |
| 4 | Stephan |
| 5 | David |
3. 相交
它用于组合两个SELECT语句。 相交(Intersect)操作从两个SELECT语句返回公共行。
在“相交”操作中,数据类型和列的数量必须相同。
它没有重复项,默认情况下按升序排列数据。
语法
SELECT column_name FROM table1
INTERSECT
SELECT column_name FROM table2;
示例:
使用上面的First表和Second表。
相交查询语句是:
SELECT * FROM First
INTERSECT
SELECT * FROM Second;
执行上面查询语句,得到以下结果:
ID NAME
----------------------------------
3 Jackson
4. 差集
它结合了两个SELECT语句的结果。 差集运算符用于显示第一个查询中存在但第二个查询中不存在的行。
它没有重复项,默认情况下按升序排列数据。
语法:
SELECT column_name FROM table1
MINUS
SELECT column_name FROM table2;
示例
使用上面的First表和Second表。
差积查询语句是:
SELECT * FROM First
MINUS
SELECT * FROM Second;
执行上面查询语句,得到以下结果:
ID NAME
------------------------------------
1 Jack
2 Harry
上一篇:
SQL连接查询
下一篇:无
