中易网

一个sql语句报错ORA-00904: "入职天数": 标识符无效 不清楚为什么

答案:3  悬赏:60  
解决时间 2021-01-12 12:40
  • 提问者网友:树红树绿
  • 2021-01-11 18:44
一个sql语句报错ORA-00904: "入职天数": 标识符无效 不清楚为什么
最佳答案
  • 二级知识专家网友:不如潦草
  • 2021-01-11 19:45
where 语句后面,"入职天数"是一个别名,不能用在这里。
select * from
( select ename,sal,trunc(sysdate-hiredate) as "入职天数" from scott.emp where sal<=1200 ) a where "入职天数">=10000 order by sal,"入职天数";
全部回答
  • 1楼网友:几近狂妄
  • 2021-01-11 21:43
"入职天数"改成trunc(sysdate-hiredate)
select ename,sal,trunc(sysdate-hiredate) as "入职天数" from scott.emp
where trunc(sysdate-hiredate)>=10000 and sal<=1200 order by sal,"入职天数";
  • 2楼网友:枭雄戏美人
  • 2021-01-11 20:10
这个是where条件里的"入职天数"还没有定义的缘故。
主要是因为 sql中的执行顺序决定的。
你想啊,where本来就是要过滤查询结果的,是要先执行的,根本就还没有读到 select中对于别名的定义。当然会出错。
而order by中使用别名是可以的,也是因为查询结果已经过滤出来。
可以把where条件中使用别名的地方,换成最初的表达式。比如 where trunc(sysdate-hiredate)>=10000
希望可以帮到你。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息