SQL集合操作
精华
小牛编辑
135浏览
2023-03-14
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