📣
TiDB Cloud Premium 开放公测中。为企业级工作负载提供无限扩展、即时弹性伸缩和高级安全保障。此页面由 AI 自动翻译,英文原文请见此处。

集合运算符



集合运算符将两个查询的结果组合为单个结果。TiDB Cloud Lake 支持以下集合运算符:

INTERSECT

返回两个查询都选中的所有去重行。

语法

SELECT column1 , column2 .... FROM table_names WHERE condition INTERSECT SELECT column1 , column2 .... FROM table_names WHERE condition

示例

create table t1(a int, b int); create table t2(c int, d int); insert into t1 values(1, 2), (2, 3), (3 ,4), (2, 3); insert into t2 values(2,2), (3, 5), (7 ,8), (2, 3), (3, 4); select * from t1 intersect select * from t2;

输出:

2|3 3|4

EXCEPT

返回第一个查询选中但第二个查询未选中的所有去重行。

语法

SELECT column1 , column2 .... FROM table_names WHERE condition EXCEPT SELECT column1 , column2 .... FROM table_names WHERE condition

示例

create table t1(a int, b int); create table t2(c int, d int); insert into t1 values(1, 2), (2, 3), (3 ,4), (2, 3); insert into t2 values(2,2), (3, 5), (7 ,8), (2, 3), (3, 4); select * from t1 except select * from t2;

输出:

1|2

UNION [ALL]

将两个或多个结果集中的行组合在一起。每个结果集必须返回相同数量的列,并且对应列必须具有相同或兼容的数据类型。

在组合结果集时,该命令默认会去除重复行。若要包含重复行,请使用 UNION ALL。

语法

SELECT column1 , column2 ... FROM table_names WHERE condition UNION [ALL] SELECT column1 , column2 ... FROM table_names WHERE condition [UNION [ALL] SELECT column1 , column2 ... FROM table_names WHERE condition]... [ORDER BY ...]

示例

CREATE TABLE support_team ( NAME STRING, salary UINT32 ); CREATE TABLE hr_team ( NAME STRING, salary UINT32 ); INSERT INTO support_team VALUES ('Alice', 1000), ('Bob', 3000), ('Carol', 5000); INSERT INTO hr_team VALUES ('Davis', 1000), ('Eva', 4000); -- The following code returns the employees in both teams who are paid less than 2,000 dollars: SELECT NAME AS SelectedEmployee, salary FROM support_team WHERE salary < 2000 UNION SELECT NAME AS SelectedEmployee, salary FROM hr_team WHERE salary < 2000 ORDER BY selectedemployee DESC;

输出:

Davis|1000 Alice|1000

文档内容是否有帮助?