MySQL INTERSECT运算
INTERSECT 运算符是 SQL 中的一种 SET 操作,包括 UNION、UNION ALL、MINUS 和 INTERSECT。INTERSECT 运算符返回两个集合中的不同(公共)元素或来自两个或多个表的公共记录。换句话说,它比较两个查询获得的结果并产生唯一的行,这是两个查询返回的结果。
一、MySQL INTERSECT运算 语法
以下是说明 INTERSECT 运算符用法的语法:
SELECT column_lists FROM table_name WHERE condition
INTERSECT
SELECT column_lists FROM table_name WHERE condition;
注意:MySQL 不提供对 INTERSECT 运算符的支持。本文向我们展示了如何使用 JOIN 和 IN 子句在 MySQL 中模拟 INTERSECT 查询。
以下是使用 INTERSECT 运算符的查询规则:
- 所有 SELECT 语句中的列数和顺序必须相同。
- 两个 SELECT 语句中对应列的数据类型必须相同或可转换。
我们可以通过以下图片表示来理解 INTERSECT 运算符。在这里,此运算符比较两个查询获得的结果,并仅从两个查询中生成不同的行:
二、MySQL INTERSECT运算 示例
由于MySQL不提供对 INTERSECT 运算符的支持。但是,我们可以使用INNER JOIN和IN 子句来模拟此运算符。
让我们首先创建两个具有以下结构的表来理解 INTERSECT 运算符:
表1:
mysql> CREATE TABLE tab1 (
Id INT PRIMARY KEY
);
mysql> INSERT INTO tab1 VALUES (1), (2), (3), (4);
表2:
mysql> CREATE TABLE tab2 (
id INT PRIMARY KEY
);
mysql> INSERT INTO tab2 VALUES (3), (4), (5), (6);
1)使用 DISTINCT 和 INNER JOIN 子句的 INTERSECT 运算符
以下语句使用DISTINCT运算符和 INNER JOIN 子句从两个表中返回不同的行:
mysql> SELECT DISTINCT column_list FROM table_name1
INNER JOIN table_name2 USING(join_condtion);
示例:
mysql> SELECT DISTINCT Id FROM tab1
INNER JOIN tab2 USING (Id);
输出结果为:
2)使用 IN 和子查询的 INTERSECT 运算符
以下语法使用 IN 和 Subquery 子句从两个表中返回不同的行:
mysql> SELECT DISTINCT column_list FROM table_name1
WHERE column_name IN (SELECT column_list FROM table_name2);
示例:
mysql> SELECT DISTINCT Id FROM tab1
WHERE Id IN (SELECT Id FROM tab2);
输出结果为:
热门文章
优秀文章