Oracle有A和B两张表两表有一些字段相同按条件筛选出一些B表的数据去掉A表里筛选出的B表数据使用左连接请提供示例改进上面的示例where条件有多个的情况左连接使用+符号的书写方式
假设A表和B表的结构如下:
A表: | id | name | age | |----|------|-----| | 1 | John | 20 | | 2 | Mary | 25 | | 3 | Alex | 30 | | 4 | Jane | 35 |
B表: | id | name | age | |----|------|-----| | 1 | John | 20 | | 2 | Mary | 25 | | 3 | Alex | 30 | | 5 | Mark | 40 |
使用左连接获取满足条件的B表数据,并去掉A表中筛选出的B表数据的示例SQL如下:
SELECT B.*
FROM B
LEFT JOIN A ON B.id = A.id
WHERE A.id IS NULL
结果: | id | name | age | |----|------|-----| | 5 | Mark | 40 |
如果需要添加多个条件,可以使用+符号的书写方式,示例SQL如下:
SELECT B.*
FROM B, A
WHERE B.id = A.id(+)
AND A.id IS NULL
AND B.age > 25(+)
结果: | id | name | age | |----|------|-----| | 5 | Mark | 40 |
注意,在Oracle 12c及以后的版本中,不推荐使用+符号的书写方式,建议使用标准的LEFT JOIN语法
原文地址: https://www.cveoy.top/t/topic/ixVN 著作权归作者所有。请勿转载和采集!