如何仅使用JOIN获取两表非公共记录?附表结构与需求
解决方案
可以使用LEFT JOIN实现需求,通过关联两张表并筛选关联失败的记录即可得到非公共数据:
SELECT d.deptno, d.dname FROM dept d LEFT JOIN emp e ON d.deptno = e.ename WHERE e.empno IS NULL;
逻辑说明
LEFT JOIN会保留dept表的全部记录,同时匹配emp表中ename与dept.deptno相等的记录- 当
dept里的deptno在emp的ename中找不到对应值时,emp表的字段会返回NULL - 通过
WHERE e.empno IS NULL筛选出这些未匹配的记录,就是目标的非公共记录
内容的提问来源于stack exchange,提问作者Deva
相关产品推荐
相关产品推荐

