📅  最后修改于: 2021-01-11 11:19:38             🧑  作者: Mango
SET运算符组合来自多个SELECT语句的结果。这可能看起来类似于Joins,但是joins合并了来自不同表的列,而SET运算符合并了来自多行的行。
以下是指定Set运算符的以下规则,例如:
SQL支持以下集合运算符:
Set Operator | Function |
---|---|
INTERSECT | It returns result in rows that appear in all answer sets generated by the individual SELECT statements. |
MINUS / EXCEPT |
The result is those rows returned by the first SELECT except for those also selected by the second SELECT. |
UNION | It combines the results of two or more SELECT statements. |
UNION语句用于合并多个SELECT语句的结果。它忽略重复项。
句法
以下是UNION语句的基本语法。
SELECT col1, col2, col3...
FROM
[WHERE condition]
UNION
SELECT col1, col2, col3...
FROM
[WHERE condition];
例
将以下学生表视为T1,将出勤表视为T2。
RollNo
FirstName
LastName
BirthDate
1001
Mike
Richard
1/2/1996
1002
Robert
Williams
3/5/1995
1003
Peter
Collin
4/1/1994
1004
Alexa
Stuart
11/6/1995
1005
Robert
Peterson
12/1/1997
RollNo
present
Absent
%
1001
200
20
90%
1002
160
60
72%
1003
150
70
68%
1004
210
10
95%
以下UNION查询结合了T1和T2表中的RollNo值。
SELECT RollNo
FROM
T1
UNION
SELECT RollNo
FROM
T2;
执行查询时,它将给出以下输出,例如:
RollNo
1001
1002
1003
1004
1005
2. UNION ALL
UNION ALL语句类似于UNION语句。它合并了来自多个表的结果,包括重复的行。
句法
以下是UNION ALL语句的基本语法。
SELECT col1, col2, col3...
FROM
[WHERE condition]
UNION ALL
SELECT col1, col2, col3...
FROM
[WHERE condition];
例
以下是UNION ALL语句的示例。
SELECT RollNo
FROM
T1
UNION ALL
SELECT RollNo
FROM
T2;
执行上述查询后,将产生以下输出。并且它也返回重复项。
RollNo
1001
1002
1003
1004
1005
1001
1002
1003
1004
3.相交
INTERSECT命令还用于合并来自多个SELECT语句的结果。
它从第一个SELECT语句返回与第二个SELECT语句中具有匹配项的行。
句法
以下是INTERSECT语句的基本语法。
SELECT col1, col2, col3...
FROM
[WHERE condition]
INTERSECT
SELECT col1, col2, col3...
FROM
[WHERE condition];
例
以下是INTERSECT语句的示例。它返回两个表中都存在的RollNo值。
SELECT RollNo
FROM
T1
INTERSECT
SELECT RollNo
FROM
T2;
执行上述查询后,将返回以下记录。 RollNo 1005被排除在外,因为它在T2表中不存在。
RollNo
1001
1002
1003
1004
4.减/除
MINUS / EXCEPT命令合并来自多个表的行并返回这些行,这些行在第一个SELECT中,但不在第二个SELECT中。它们都返回相同的结果。
句法
以下是MINUS语句的基本语法。
SELECT col1, col2, col3...
FROM
[WHERE condition]
MINUS
SELECT col1, col2, col3...
FROM
[WHERE condition];
例
以下是MINUS语句的示例。
SELECT RollNo
FROM
T1
MINUS
SELECT RollNo
FROM
T2;
执行此查询时,将提供以下输出。
RollNo
1005