MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
MySql差异性

MySQL INTERSECT

INTERSECT运算符是SQL中的一种SET操作,包括 UNION,UNION ALL,MINUS和INTERSECT。 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运算符的模拟

由于 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);

使用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);
输出:
执行上面的查询后,我们应该得到如下图所示的输出:
MySQL INTERSECT

使用IN和Subquery的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);
输出:
执行上面的查询后,我们应该得到如下图所示的输出:
MySQL INTERSECT
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4