SQL 查询从一个表中获取其他 3 个表中不存在的行

标签 sql database oracle

我有4张 table ,

A, B, C, D

A 有 Aid 列, B 有辅助栏, C 有 Aid 列, D有列Aid

(援助是所有4个表中的公共(public)栏)

现在我想从 A 表中获取 B 或 C 或 D 中不存在的行 任何人都可以让我知道这个的 SQL 查询。

最佳答案

准备示例数据:

CREATE TABLE A (aid int);
CREATE TABLE B (aid int);
CREATE TABLE C (aid int);
CREATE TABLE D (aid int);
INSERT INTO A VALUES (1);
INSERT INTO A VALUES (2);
INSERT INTO A VALUES (3);
INSERT INTO A VALUES (4);
INSERT INTO A VALUES (5);
INSERT INTO B VALUES (2);
INSERT INTO C VALUES (3);
INSERT INTO D VALUES (4);

查询:

SELECT aid
FROM A
LEFT OUTER JOIN B on A.aid=B.aid
LEFT OUTER JOIN C on A.aid=C.aid
LEFT OUTER JOIN D on A.aid=D.aid
WHERE B.aid IS NULL AND C.aid IS NULL AND D.aid IS NULL;

结果是15

关于SQL 查询从一个表中获取其他 3 个表中不存在的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44944456/

相关文章:

oracle - 在 Oracle 10g 中发出 commit 语句时会发生什么?

java - JPA 禁止执行 ALTER SEQUENCE

sql - 在 PL/SQL 变量名称中使用下划线或大写

mysql - 使用 SQL CASE 语句替换列

JOIN 中的 SQL 查询性能

mysql - sql数据库中列值的多表约束

php - PDO SQL-state "00000"但仍然出错?

sql - 连接 2 个不明确的 SQL 表

php - 使用 PHPmyAdmin 加密/解密 MySQL 数据库

sql - 没有 order by 子句的 Oracle 有序结果集