Sql简介 专题
专题目录
您的位置:database > Sql简介专题 > SQL Intersect运算符
SQL Intersect运算符
作者:--    发布时间:2019-11-20

本教程解释了sql intersect运算符,并向演示如何应用它来获取两个或多个查询的交集。

1. sql intersect运算符简介

intersect运算符是一个集合运算符,它从select语句返回两个或多个结果集的不同行。

假设有两个表记录:a(1,2)b(2,3)

下图说明了ab表的交集。

紫色部分是绿色和蓝色结果集的交集。

union运算符一样,intersect运算符从最终结果集中删除重复的行。以下语句说明了如何使用intersect运算符查找两个结果集的交集。

select
    id
from
    a 
intersect
select
    id
from
    b;

要使用intersect运算符,select语句的列需要遵循以下规则:

  • 列的数据类型必须兼容。
  • select语句中的列数及其顺序必须相同。

3. sql intersect运算符示例

以下select语句返回表a中的行:

select
    id
from
    a;
+----+
| id |
+----+
|  1 |
|  2 |
+----+
2 rows in set

以下语句从表b中检索数据:

select
    id
from
    b;
+----+
| id |
+----+
|  2 |
|  3 |
+----+
2 rows in set

以下语句使用intersect运算符来获取两个查询的交集。

select
    id
from
    a 
intersect
select
    id
from
    b;

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

sql intersect带有order by示例

要对intersect运算符返回的结果集进行排序,请将order by子句放在所有语句的末尾。

例如,以下语句将intersect运算符应用于ab表,并按降序对id列的组合结果集进行排序。

select
    id
from
    a 
intersect
select
    id
from
    b
order by id desc

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

使用inner join子句模拟sql intersect运算符

大多数关系数据库系统支持intersect运算符,如oracle数据库,microsoft sql server,postgresql等。但是,某些数据库系统(mysql)不提供intersect运算符。

要模拟sql intersect运算符,可以使用inner join子句,如下所示:

select
    a.id
from
    a
inner join b on b.id = a.id

它返回a表中与b表中匹配行的行,这些行产生与intersect运算符相同的结果。

现在您应该对sql intersect运算符有一个很好的理解,并知道如何使用它来查找多个查询的交集。


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册