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半连接的区别
半连接返回第一个表中至少找到一个匹配项的每一行的一个副本,而反连接返回第一个表中没有找到匹配项的每一行的一个副本。
热门文章
优秀文章