📅  最后修改于: 2023-12-03 15:35:05.451000             🧑  作者: Mango
在SQL中,INTERSECT子句用于返回两个或多个选择的结果集中共享的行。该子句可用于查找两个表之间的交集。
以下是INTERSECT子句的基本语法:
SELECT column1, column2, ... column_n
FROM table1
INTERSECT
SELECT column1, column2, ... column_n
FROM table2;
在此语法中,您需要指定包含要选择的列和使用的FROM子句的两个或多个表。 INTERSECT子句在两个或多个表之间计算交集。
现在,让我们看一些使用INTERSECT子句的示例。
假设有两个表T1和T2,它们如下所示:
T1表:
| id | name | age | | -- | ----- | --- | | 1 | John | 25 | | 2 | Maria | 30 | | 3 | Jack | 35 | | 4 | Alice | 40 |
T2表:
| id | name | age | | -- | ------- | --- | | 2 | Maria | 30 | | 4 | Alice | 40 | | 6 | Michael | 45 | | 8 | Jane | 50 |
现在,我们将使用INTERSECT子句来查找这两个表之间的交集,如下所示:
SELECT id, name, age
FROM T1
INTERSECT
SELECT id, name, age
FROM T2;
结果将是以下内容:
| id | name | age | | -- | ----- | --- | | 2 | Maria | 30 | | 4 | Alice | 40 |
此查询返回两个表之间共享的行。在本例中,它只返回T1和T2表之间的两个行。
您还可以在两个SELECT语句之间使用WHERE子句来定义交集的条件。例如:
SELECT id, name, age
FROM T1
WHERE age > 30
INTERSECT
SELECT id, name, age
FROM T2
WHERE age > 30;
该查询将返回具有age大于30的行的T1和T2之间的交集。在本例中,只有一个行匹配条件:
| id | name | age | | -- | ----- | --- | | 4 | Alice | 40 |
在SQL中使用INTERSECT子句可用于查找两个或多个表之间共享的行。可以使用WHERE子句定义更复杂的条件来查找交集。