PostgreSQL INTERSECT 用法与实例

本文介绍了在 PostgreSQL 中如何使用 INTERSECT 运算符计算两个结果集的交集。

在 PostgreSQL 中, INTERSECT 是一个集合运算符,它返回两个集合的交集。也就是说,它返回那些同时位于两个结果集中的行。

其他的集合操作运算符还有: UNIONEXCEPT

PostgreSQL INTERSECT 语法

要计算两个结果集的交集,请按照以下语法使用使用 INTERSECT 运算符:

SELECT_statement_1
INTERSECT
SELECT_statement_2
[ORDER BY ...];

或者您可以同时计算多个结果集的交集,如下:

SELECT_statement_1
INTERSECT
SELECT_statement_2
INTERSECT
SELECT_statement_3
INTERSECT
...
[ORDER BY ...];

这里:

  • SELECT_statement_N 都是个独立 SELECT 语句。
  • 参与 INTERSECT 运算的所有的结果集应该具有相同的列,并且列的数据类型和顺序应该相同。
  • ORDER BY 子句用于对最终结果进行排序,它是可选的。

PostgreSQL INTERSECT 实例

在本示例中,我们将使用 generate_series() 函数用来生成结果集。

我们需要用到两个结果集,先看第一个结果集:

SELECT generate_series(1, 5);
 generate_series
-----------------
               1
               2
               3
               4
               5

再看一下第二个结果集:

SELECT generate_series(3, 6);
 generate_series
-----------------
               3
               4
               5
               6

现在,我们对两个结果集进行 INTERSECT 运算:

SELECT generate_series(1, 5)
INTERSECT
SELECT generate_series(3, 6)
ORDER BY generate_series;
 generate_series
-----------------
               3
               4
               5
(3 rows)

从结果看出,INTERSECT 运算符返回了第一个集合和第二个集合的共有的行。

结论

在 PostgreSQL 中, INTERSECT 用来计算两个结果集的交集。