2017-04-10 162 views
0

此查询引发错误ORA-00904: invalid identifier,有人可以告诉我为什么吗?SQL查询中的无效标识符

select papf.person_id, papf.person_number, ppnf.DISPLAY_NAME 
from per_people_f papf, PER_PERSON_NAMES_F ppnf 
where 
papf.person_id=ppnf.person_id 
and papf.person_id not in (select cs.person_id from cmp_salary cs where cs.person_id is not null and cs.ASSIGNMENT_ID is null) 
and papf.person_id not in (select cse.person_id from cmp_salary_export cs where cse.person_id is not null and cse.ASSIGNMENT_ID is null) 
and ppnf.name_type='US' 
order by papf.person_id 
+0

**您的问题,并添加**完整的**错误信息。不要在评论中发布其他信息。 –

+1

今天提示:切换到现代,明确的'JOIN'语法!易于编写(没有错误),更易于阅读和维护,并且在需要时更容易转换为外部联接。 – jarlh

+0

语法有效。好像你拼错了列或表名。删除一些东西,然后再试一次。 – jarlh

回答

1

这是一个错字。在第二个子查询中,您已将所有列引用别名为cse.,但您已将表cs别名。

(select cse.person_id 
from cmp_salary_export cs 
where cse.person_id is not null 
and cse.ASSIGNMENT_ID is null) 

用适当的缩进排列代码不仅仅是简单:使得它更易于阅读,因此更易于调试。