SQL INTERSECT

2025年2月2日 | 阅读6分钟

INTERSECT 是结构化查询语言中的一个运算符,它将两个 SELECT 语句的结果集组合起来,并仅返回第一个 SELECT 语句中与第二个 SELECT 语句结果集相同的行。

简单来说,我们可以说这个运算符显示了两个 SELECT 语句中的共同行。

此运算符在 MySQL 数据库中不起作用。

INTERSECT 运算符的语法

与 INTERSECT SQL 运算符连接的每个 SELECT 语句的数据类型和字段数量必须相同。

SQL 中 INTERSECT 运算符的示例

要理解 INTERSECT 运算符的示例,我们需要在 SQL 中创建两个不同的表 Old_Faculty_Info 和 New_Faculty_Info,并将 IIT 教师的记录插入到这两个表中。

以下 CREATE 语句在 IIT_College 数据库中创建 Old_Faculty_Info

以下 INSERT 查询将教师的记录插入到 Old_Faculty_Info 表中

以下 SQL 语句将在屏幕上显示 Old_Faculty_Info 表的记录


Faculty_IdFaculty_First_NameFaculty_Last_NameFaculty_Dept_IdFaculty_Joining_DateFaculty_CityFaculty_Salary
1001ArushSharma40012020-01-02德里20000
1002BulbulRoy40022019-12-31德里38000
1004SaurabhRoy40012020-10-10孟买45000
1005ShivaniSinghania40012019-07-15加尔各答42000
1006AvinashSharma40022019-11-11德里28000
1007ShyamBesas40032021-06-21勒克瑙35000

以下 CREATE 语句在 IIT_College 数据库中创建 New_Faculty_Info

以下 INSERT 查询将教师的记录插入到 New_Faculty_Info 表中

步骤 4:查看插入的数据

以下 SELECT 语句显示 New_Faculty_Info 表的数据。


Faculty_IdFaculty_First_NameFaculty_Last_NameFaculty_Dept_IdFaculty_Joining_DateFaculty_CityFaculty_Salary
1010AnkushRoy40042018-10-02德里25000
1001ArushSharma40012020-01-02德里20000
1009RajSinghania40052021-05-10Noida40000
1005ShivaniSinghania40012019-07-15加尔各答42000
1008AvinabhChetya40022018-11-11Banglore22000
1007ShyamBesas40032021-06-21勒克瑙35000

以下查询显示了两个表中教师的共同记录

输出

Faculty_IdFaculty_First_NameFaculty_Last_NameFaculty_Dept_IdFaculty_Joining_DateFaculty_CityFaculty_Salary
1001ArushSharma40012020-01-02德里20000
1005ShivaniSinghania40012019-07-15加尔各答42000
1007ShyamBesas40032021-06-21勒克瑙35000

带有 WHERE 子句的 INTERSECT 运算符

SQL WHERE 子句也可以与 INTERSECT 运算符一起使用,用于过滤一个或两个表中的记录。

带有 WHERE 子句的 INTERSECT 语法

带有 WHERE 子句的 INTERSECT 示例

以下查询显示了以上表中工资大于等于 35000 的教师记录

输出

Faculty_IdFaculty_First_NameFaculty_Last_NameFaculty_Dept_IdFaculty_Joining_DateFaculty_CityFaculty_Salary
1005ShivaniSinghania40012019-07-15加尔各答42000
1007ShyamBesas40032021-06-21勒克瑙35000

带有 ORDER BY 子句的 INTERSECT 运算符

SQL ORDER BY 子句也可以与 INTERSECT 运算符一起使用,以根据指定的组显示记录。

以下块显示了带有 ORDER BY 子句的 INTERSECT 运算符的语法

示例

要理解带有 Order By 子句的 Intersect 运算符的示例,我们需要在 SQL 中创建两个表。

以下 CREATE 语句在 IT_Company 数据库中创建 Old_Employee_Info 表

以下 INSERT 查询将员工的记录插入到 Old_Employee_Info 表中

以下查询显示 Old_Employee_Info 表的数据。


Employee_IDEmployee_NameEmployee_GenderEmployee_AgeEmployee_Saalary
1001Arush男性 (Male)1835000
1002Bulbul女性 (Female)1842000
1004Saurabh男性 (Male)2045000
1005Shivani女性 (Female)2528000
1006Avinash男性 (Male)2238000
1007Shyam男性 (Male)1820000

以下 CREATE 语句在 IT_Company 数据库中创建 New_Employee_Info 表

以下 INSERT 查询将员工的记录插入到 New_Employee_Info 表中

以下查询显示 New_Employee_Info 表的数据。


Employee_IDEmployee_NameEmployee_GenderEmployee_AgeEmployee_Saalary
1007Anuj男性 (Male)2249000
1010Saket男性 (Male)2969000
1005Shivani女性 (Female)2528000
1006Avinash男性 (Male)2238000
1009女性 (Female)男性 (Male)1825000

以下查询以降序显示两个表中共同员工的记录


Employee_IDEmployee_NameEmployee_GenderEmployee_AgeEmployee_Saalary
1006Avinash男性 (Male)2238000
1005Shivani女性 (Female)2528000