Oracle 左连接筛选数据示例:如何从 A 表中筛选数据并从 B 表中去除匹配项
Oracle 左连接筛选数据示例:如何从 A 表中筛选数据并从 B 表中去除匹配项
假设 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 |
目标:
筛选出 A 表 age 字段大于 25 的记录,并从 B 表中去除筛选出的记录中相同 id 和 name 的记录。
使用左连接 + 符号的 Oracle 示例查询语句如下:
SELECT B.id, B.name, B.age
FROM B
LEFT JOIN A ON B.id = A.id AND B.name = A.name
WHERE A.age > 25 OR A.age IS NULL;
解释:
- 左连接: 使用
LEFT JOIN将 B 表与 A 表进行关联。 - 关联条件: 使用
ON子句指定关联条件,即B.id = A.id且B.name = A.name。 - 筛选条件: 使用
WHERE子句筛选出 A 表中age字段大于 25 的记录,或者 A 表中不存在的记录(即A.age IS NULL)。 - 结果: 最后返回 B 表中符合条件的记录的
id、name和age字段。
总结:
该查询语句通过左连接将 B 表与 A 表进行关联,并在 WHERE 子句中使用条件筛选出 A 表中符合条件的记录,并利用 LEFT JOIN 的特性,从 B 表中返回与 A 表匹配的记录。
原文地址: https://www.cveoy.top/t/topic/qfdc 著作权归作者所有。请勿转载和采集!