📜  SQL | INTERSECT子句(1)

📅  最后修改于: 2023-12-03 15:35:05.451000             🧑  作者: Mango

SQL | INTERSECT子句

在SQL中,INTERSECT子句用于返回两个或多个选择的结果集中共享的行。该子句可用于查找两个表之间的交集。

语法

以下是INTERSECT子句的基本语法:

SELECT column1, column2, ... column_n
FROM table1
INTERSECT
SELECT column1, column2, ... column_n
FROM table2;

在此语法中,您需要指定包含要选择的列和使用的FROM子句的两个或多个表。 INTERSECT子句在两个或多个表之间计算交集。

示例

现在,让我们看一些使用INTERSECT子句的示例。

示例1:查找两个表之间的交集

假设有两个表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表之间的两个行。

示例2:使用WHERE子句

您还可以在两个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子句定义更复杂的条件来查找交集。