Oracle有A和B两张表B是A的子集不在B表的数据都显示B表里有数据时符合B表的一些条件才显示否则不显示。请提供示例改进上面的示例要求例子通用A和B表都有多个字段
假设A表包含字段a1、a2、a3,B表包含字段b1、b2、b3。
示例1: 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: 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表条件的数据才会显示出来
原文地址: https://www.cveoy.top/t/topic/ixSV 著作权归作者所有。请勿转载和采集!