如何在SQL中查找两表不匹配记录?NOT EXISTS查询报错如何解决?
问题原因
- 你在查询中已经为
recruiter表声明了别名r,为recruiter_assigned_role表声明了别名rar,SQL语法规定:同一段查询作用域内一旦为表声明了别名,后续所有对该表的字段引用都必须使用别名,不可再使用原表名。 - 你的WHERE条件中仍然使用
recruiter_assigned_role.recruiterUser、recruiter.userId这类原表名引用,数据库无法定位到对应的表条目,因此触发无效表引用报错。
修正方案
方案1:保留别名,统一使用别名引用字段
SELECT * FROM recruiter r WHERE NOT EXISTS ( SELECT * FROM recruiter_assigned_role rar WHERE rar.recruiterUser = r.userId )
方案2:不使用别名,直接使用原表名编写
SELECT * FROM recruiter WHERE NOT EXISTS ( SELECT * FROM recruiter_assigned_role WHERE recruiter_assigned_role.recruiterUser = recruiter.userId )
内容的提问来源于stack exchange,提问作者Shamoon
相关产品推荐
相关产品推荐

