Oracle Semi Join半连接

一、Oracle Semi Join半连接 介绍

半连接是在 Oracle 8.0 中引入的。它提供了一种执行 WHERE EXISTS 子查询的有效方法。

半连接返回第一个表中至少找到一个匹配项的每一行的一个副本。

半连接是使用 EXISTS 结构编写的。

二、Oracle Semi 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    EXISTS  
                 (  
                 SELECT 1  
                 FROM   customer  
                 WHERE customer.department_id = departments.department_id  
                 )  
        ORDER BY departments.department_id;  

输出结果为:

三、anti-join反连接和semi-join半连接的区别

半连接返回第一个表中至少找到一个匹配项的每一行的一个副本,而反连接返回第一个表中没有找到匹配项的每一行的一个副本。

热门文章

优秀文章