SQL Server 中的交集运算符讲解

1. 什么是交集运算符

在SQL Server中,交集运算符是用来连接两个或多个SELECT语句的,得到他们共有的行的集合。交集运算符包括:INTERSECT、INTERSECT ALL。其中,INTERSECT只返回结果集中相同的行,并剔除掉重复的行;而INTERSECT ALL会将相同的行重复输出。

2. INTERSECT运算符

2.1 INTERSECT运算符语法

INTERSECT运算符的语法如下:

SELECT column1 [, column2 ]

FROM table1

[WHERE condition]

INTERSECT

SELECT column1 [, column2 ]

FROM table2

[WHERE condition];

其中,column1、column2表示要查询的列名;table1、table2为要查询的表名;WHERE condition为WHERE条件,表示想要筛选出来的数据。

2.2 INTERSECT运算符示例

以下是一个使用INTERSECT运算符的例子:

SELECT customer_name, contact_name, city

FROM customers

WHERE city = 'London'

INTERSECT

SELECT customer_name, contact_name, city

FROM customers

WHERE city = 'Berlin';

这个例子中,我们查询了customers表中城市为London和Berlin的客户名称、联系人和城市,使用INTERSECT运算符,得到了这两个城市中都存在的客户名称、联系人和城市。

3. INTERSECT ALL运算符

3.1 INTERSECT ALL运算符语法

INTERSECT ALL运算符的语法与INTERSECT运算符的语法类似,如下所示:

SELECT column1 [, column2 ]

FROM table1

[WHERE condition]

INTERSECT ALL

SELECT column1 [, column2 ]

FROM table2

[WHERE condition];

其中,column1、column2表示要查询的列名;table1、table2为要查询的表名;WHERE condition为WHERE条件,表示想要筛选出来的数据。

3.2 INTERSECT ALL运算符示例

以下是一个使用INTERSECT ALL运算符的例子:

SELECT customer_name, contact_name, city

FROM customers

WHERE city = 'London'

INTERSECT ALL

SELECT customer_name, contact_name, city

FROM customers

WHERE city = 'London' OR city = 'Berlin';

这个例子中,我们查询了customers表中城市为London和Berlin的客户名称、联系人和城市,使用INTERSECT ALL运算符,得到了这两个城市中所有的客户名称、联系人和城市,并保留重复的行。

4. 总结

通过INTERSECT和INTERSECT ALL运算符的学习和示例,我们可以得到以下结论:

INTERSECT运算符用于连接两个或多个SELECT语句,得到他们共有的行的集合,并剔除掉重复的行。

INTERSECT ALL运算符用于连接两个或多个SELECT语句,得到他们共有的行的集合,并保留重复的行。

在实际开发过程中,学会使用这两个运算符可以极大地提高我们的查询效率,快速获取到所需的结果。

数据库标签