python 交集运算符_MySQL交集INTERSECT运算符

在本教程中,我们将向您介绍SQL INTERSECT运算符,并展示如何模拟MySQL INTERSECT运算符(交集)。

1. SQL INTERSECT操作符简介

INTERSECT运算符是一个集合运算符,它只返回两个查询或更多查询的交集。

以下说明INTERSECT运算符的语法。

(SELECT column_list

FROM table_1)

INTERSECT

(SELECT column_list

FROM table_2);

INTERSECT运算符比较两个查询的结果,并返回由左和右查询输出的不同行记录。

要将INTERSECT运算符用于两个查询,应用以下规则:

列的顺序和数量必须相同。

相应列的数据类型必须兼容或可转换。

下图说明了INTERSECT运算符。

左侧查询产生一个结果集(1,2,3),右侧查询返回一个结果集(2,3,4)。

INTERSECT操作符返回包含(2,3),也就是两个结果集的相叉的行记录。与UNION运算符不同,INTERSECT运算符返回两个集合之间的交点。

请注意,SQL标准有三个集合运算符,包括UNION,INTERSECT和MINUS。

2. MySQL INTERSECT模拟

不幸的是,MySQL不支持INTERSECT操作符。 但是我们可以模拟INTERSECT操作符。

我们为演示创建一些示例数据。

以下语句创建表t1和t2,然后将数据插入到两个表中。

USE testdb;

DROP TABLE IF exists t1;

DROP TABLE IF exists t2;

CREATE TABLE t1 (

id INT PRIMARY KEY

);

CREATE TABLE t2 LIKE t1;

INSERT INTO t1(id) VALUES(1),(2),(3);

INSERT INTO t2(id) VALUES(2),(3),(4);

以下从t1表查询返回行记录如下 -

mysql> SELECT id FROM t1;

+----+

| id |

+----+

| 1 |

| 2 |

| 3 |

+----+

3 rows in set

以下从t2表查询返回行记录如下 -

mysql> SELECT id FROM t2;

+----+

| id |

+----+

| 2 |

| 3 |

| 4 |

+----+

3 rows in set

使用DISTINCT运算符和INNER JOIN子句模拟MySQL INTERSECT运算符

以下语句使用DISTINCT运算符和INNER JOIN子句来返回两个表中的相交集合:

SELECT DISTINCT

id

FROM t1

INNER JOIN t2 USING(id);

执行上面查询语句,得到以下结果 -

+----+

| id |

+----+

| 2 |

| 3 |

+----+

2 rows in set

上面语句是怎么工作的?

INNER JOIN子句从左表和右表返回所有符合条件的行记录。

DISTINCT运算符删除重复行。

使用IN运算符和子查询模拟MySQL INTERSECT运算符

以下语句使用IN运算符和子查询返回两个结果集的交集。

SELECT DISTINCT

id

FROM

t1

WHERE

id IN (SELECT

id

FROM

t2);

执行以上查询语句,得到以下结果 -

+----+

| id |

+----+

| 2 |

| 3 |

+----+

2 rows in set

上面查询语句是如何工作的?

子查询返回第一个结果集。

外部查询使用IN运算符仅选择第一个结果集中的值。DISTINCT运算符确保只选择不同的值。

在本教程中,您已经学习了几种方法来模拟MySQL中的INTERSECT(交集)运算符。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值