MySQL INTERSECT

17 Mar 2025 | 阅读 2 分钟

INTERSECT 操作符是一种 SQL 中的集合操作,它包括 UNION、UNION ALL、MINUS 和 INTERSECT。INTERSECT 操作符返回两个集合中的不同(共同)元素,或两个或多个表中的共同记录。换句话说,它比较由两个查询获得的结果,并生成两个查询都返回的唯一行。

语法

以下是说明 INTERSECT 操作符用法的语法

注意:MySQL 不支持 INTERSECT 操作符。本文将介绍如何使用 JOIN 和 IN 子句在 MySQL 中模拟 INTERSECT 查询。

以下是使用 INTERSECT 操作符的查询规则

  • 所有 SELECT 语句中的列的数量和顺序必须相同。
  • 两个 SELECT 语句中对应列的数据类型必须相同或可转换。

我们可以通过以下可视化表示来理解 INTERSECT 操作符。这里,该操作符比较由两个查询获得的结果,并生成两个查询的唯一行。

MySQL INTERSECT

模拟 MySQL INTERSECT 操作符

由于 MySQL 不支持 INTERSECT 操作符,但我们可以使用 INNER JOININ 子句 来模拟此操作符。

让我们首先创建两个表,结构如下,以便理解 INTERSECT 操作符。

表 1 结构和数据

表 2 结构和数据

使用 DISTINCT 和 INNER JOIN 子句的 INTERSECT 操作符

以下语句使用 DISTINCT 操作符和 INNER JOIN 子句来返回两个表中的不同行。

示例

输出

执行上述查询后,我们应该得到如下图像所示的输出。

MySQL INTERSECT

使用 IN 和子查询的 INTERSECT 操作符

以下语法使用 IN 和子查询子句来返回两个表中的不同行。

示例

输出

执行上述查询后,我们应该得到如下图像所示的输出。

MySQL INTERSECT