📅  最后修改于: 2020-11-15 04:51:33             🧑  作者: Mango
Anti-join用于使查询运行更快。这是Oracle提供的功能非常强大的SQL构造,可用于更快的查询。
两个表之间的反联接返回第一个表中的行,其中第二个表中没有匹配项。它与半联接相反。反联接返回第一个表中每行的一个副本,找不到该副本。
反联接是使用NOT EXISTS或NOT IN构造编写的。
例
让我们拿两个表“部门”和“客户”
部门表
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
)
/
客户表
CREATE TABLE "CUSTOMER"
( "CUSTOMER_ID" NUMBER,
"FIRST_NAME" VARCHAR2(4000),
"LAST_NAME" VARCHAR2(4000),
"DEPARTMENT_ID" NUMBER
)
/
执行此查询
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;
输出量