首页 > 解决方案 > 将where条件中的子查询列检索到主查询时出错

问题描述

我正在尝试检索子查询中的列,该列用于 Oracle SQL 中的 where 条件。我面临 ORA-00904 无效标识符错误。下面是查询。有人可以解决。

试图在子查询中检索 ev.type , ev.fil_path 选择 ev.type , ev.fil_path,ev.test_path from effortvariation ev

我尝试给出 alias ,但没有被接受。

select
   ev.fil_path,
   ev.tes_path,
   sp.uname,
   sp.pwd,
   s.desc,
   sp.option,
   oq.master_id,
   oq.status
from onlineQuery oq

inner join supporttask s

    on oq.sq =s.seq

inner join securityports sp

   on sp.sq=oq.sq

where sp.type in 
             (select ev.type , ev.fil_path,ev.test_path from effortvariation ev
             where ev.team =
                        (select team from allTeams where id ='k238')
             and ev.name ='qa'
              )
and sp.acct='active'

标签: sqloracle-sqldeveloper

解决方案


如果您使用 SQL*Plus,它将指向发生错误的确切位置。例如:

SQL> select *
  2  from employee
  3  where 1 = 1
  4    and id = 23;
  and id = 23
      *                                 --> see? ID is invalid
ERROR at line 4:
ORA-00904: "ID": invalid identifier

ORA-00904 通常意味着该表中不存在具有此类名称的列。因此,如果我将其更改为名称有效的列:

SQL> c/id/empno
  4*   and empno = 23
SQL> /

no rows selected

SQL>

没有更多错误(好的,没有返回任何内容,但这不是错误)。

我建议你也这样做,找出问题所在,检查表,修复列名。如果我们知道表格的描述,我们可以提供帮助,但是 - 我们不知道,您从未发布过该信息。


推荐阅读