Oracle SQL: 获取子集表中不包含的数据,并根据条件显示子集表数据

本文介绍如何使用 Oracle SQL 从子集表 (B 表) 中获取不包含在子集表 (A 表) 中的数据,以及如何根据条件显示子集表中的数据。

场景:

假设有两个表 A 和 B,B 表是 A 表的子集,您需要实现以下功能:

  1. 显示 A 表中不在 B 表的数据
  2. 根据条件显示 B 表中的数据

示例:

假设 A 表包含字段 a1, a2, a3,B 表包含字段 b1, b2, b3

示例 1:显示 A 表中不在 B 表的数据

A 表数据:

a1 | a2 | a3
---|----|----
1  | 2  | 3
4  | 5  | 6
7  | 8  | 9

B 表数据:

b1 | b2 | b3
---|----|----
1  | 2  | 3

查询语句:

SELECT a1, a2, a3 
FROM A
LEFT JOIN B ON A.a1 = B.b1 AND A.a2 = B.b2 AND A.a3 = B.b3
WHERE B.b1 IS NULL;

查询结果:

a1 | a2 | a3
---|----|----
4  | 5  | 6
7  | 8  | 9

示例 2:根据条件显示 B 表中的数据

A 表数据:

a1 | a2 | a3
---|----|----
1  | 2  | 3
4  | 5  | 6
7  | 8  | 9

B 表数据:

b1 | b2 | b3
---|----|----
4  | 5  | 6

查询语句:

SELECT a1, a2, a3 
FROM A
LEFT JOIN B ON A.a1 = B.b1 AND A.a2 = B.b2 AND A.a3 = B.b3
WHERE B.b1 IS NULL OR (B.b1 IS NOT NULL AND A.a1 = B.b1 AND A.a2 = B.b2 AND A.a3 = B.b3);

查询结果:

a1 | a2 | a3
---|----|----
1  | 2  | 3
7  | 8  | 9

在示例 2 中,由于 B 表中存在与 A 表中一致的数据,所以只有符合 B 表条件的数据才会显示出来。

解释:

  • LEFT JOIN: 用于将 A 表与 B 表连接,并保留 A 表中的所有记录。
  • ON: 指定连接条件,确保 A 表和 B 表的对应字段相匹配。
  • WHERE: 用于筛选结果,B.b1 IS NULL 表示获取 B 表中没有匹配到的 A 表记录;B.b1 IS NOT NULL 表示获取 B 表中匹配到的 A 表记录,并根据条件进行进一步筛选。

总结:

通过 LEFT JOIN 和 WHERE 条件,您可以轻松地实现从子集表中获取不包含在子集表的数据,并根据条件显示子集表中的数据。

Oracle SQL: 如何从子集表中获取不包含在子集表的数据,并根据条件显示子集表数据

原文地址: https://www.cveoy.top/t/topic/qe9A 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录