Oracle Anti Join反连接

一、Oracle Anti Join反连接 介绍

反连接用于使查询运行得更快。它是 Oracle 提供的一个非常强大的 SQL 结构,用于加快查询速度。

两个表之间的反连接返回第一个表中没有在第二个表中找到匹配项的行。它与半连接相反。反连接返回第一个表中未找到匹配项的每一行的一个副本。

反连接是使用 NOT EXISTS 或 NOT IN 结构编写的。

二、Oracle Anti Join反连接 示例

让我们看两个表“departments”和“customer”

Departments表

CREATE TABLE  "DEPARTMENTS"   
   (    "DEPARTMENT_ID" NUMBER(10,0) NOT NULL ENABLE,   
    "DEPARTMENT_NAME" VARCHAR2(50) NOT NULL ENABLE,   
     CONSTRAINT "DEPARTMENTS_PK" PRIMARY KEY ("DEPARTMENT_ID") ENABLE  
   )  
/ 

Customer表

CREATE TABLE  "CUSTOMER"   
   (    "CUSTOMER_ID" NUMBER,   
    "FIRST_NAME" VARCHAR2(4000),   
    "LAST_NAME" VARCHAR2(4000),   
    "DEPARTMENT_ID" NUMBER  
   )  
/  

执行以下SQL语句:

SELECT   departments.department_id, departments.department_name  
        FROM     departments  
        WHERE    NOT EXISTS  
                 (  
                 SELECT 1  
                 FROM   customer  
                 WHERE customer.department_id = departments.department_id  
                 )  
        ORDER BY departments.department_id;  

输出结果为:

热门文章

优秀文章