SQL的INTERSECT
语法用于返回两个或多个SELECT语句的公共结果集。它允许你找到多个查询共有的行。
基本语法如下:
SELECT column1, column2, ...
FROM table1
WHERE condition
INTERSECT
SELECT column1, column2, ...
FROM table2
WHERE condition;
在这个例子中,table1
和table2
是你想要从中检索数据的表,column1
、column2
等是列名,而condition
是筛选数据的条件。
请注意,每个SELECT语句都必须包含与另一个SELECT语句中相同数量的列,并且这些列的数据类型必须兼容。此外,每个SELECT语句中的列名也必须是相同的(或者至少是等价的,即具有相同的名称和数据类型)。
INTERSECT
操作符返回的结果集包含所有在两个查询中都出现的行。如果某个行只在一个查询中出现,那么它就不会出现在结果集中。
这是一个简单的例子来说明INTERSECT
的用法:
假设我们有两个表,employees_old
和employees_new
,它们都有employee_id
、first_name
和last_name
列。我们想要找出同时在这两个表中工作的员工的名字。我们可以使用INTERSECT
来实现这个目标:
SELECT first_name, last_name
FROM employees_old
WHERE employee_id IN (SELECT employee_id FROM employees_new)
INTERSECT
SELECT first_name, last_name
FROM employees_new
WHERE employee_id IN (SELECT employee_id FROM employees_old);
在这个例子中,我们首先从employees_old
表中选择了所有在employees_new
表中也有的员工的first_name
和last_name
。然后,我们使用INTERSECT
来找出同时也在employees_new
表中工作的员工的名字。注意,这里我们使用了子查询来找出在另一个表中有记录的员工ID。