【问题标题】:Oracle SQL Query invalid identifier (ORA-00904)Oracle SQL 查询无效标识符 (ORA-00904)
【发布时间】:2021-02-24 20:12:55
【问题描述】:

我正在执行 SQL 查询,但遇到了问题。

这是查询。

SELECT Count(*) CNT
FROM   job_intern_manage T1
       LEFT JOIN job_intern_detail T2
              ON T1.jid_seq = T2.jid_seq
WHERE  T2.js_seq = '2'
       AND T1.del_yn = 'N'
       AND (SELECT Count(*)
            FROM   (SELECT prof_name
                    FROM   job_intern_report
                    WHERE  jim_seq = T1.jim_seq)
            WHERE  prof_name LIKE '%취업%') >= 1;

这是结果。

ORA-00904: "T1"."JIM_SEQ": 부적합한 식별자
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
27행, 38열에서 오류 발생

不知道为什么“T1”在子查询中无效。

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    请试试这个 select 语句:

    SELECT Count(*) CNT
    FROM   job_intern_manage T1
           LEFT JOIN job_intern_detail T2 ON T1.jid_seq = T2.jid_seq
    WHERE  T2.js_seq = '2'
           AND T1.del_yn = 'N'
           AND (SELECT Count(*)
                FROM  job_intern_report
                WHERE jim_seq = T1.jim_seq
                  AND prof_name LIKE '%취업%') >= 1;
    

    您应该检查 job_intern_manage 表是否真的有一个名为 jim_seq 的列。

    【讨论】:

    • 我是个傻瓜。非常感谢您的帮助!
    【解决方案2】:

    使用EXISTS:

    SELECT Count(*) as CNT
    FROM job_intern_manage jim JOIN
         job_intern_detail jid
         ON jim.jid_seq = jid.jid_seq
    WHERE jid.js_seq = '2' AND
          jim.del_yn = 'N' AND
          EIXSTS (SELECT 1
                  FROM job_intern_report jir
                  WHERE jir.jim_seq = jim.jim_seq AND
                        jir.prof_name LIKE '%취업%'
                 );
    

    您的查询的问题是相关子句嵌套了两个级别 - 而 Oracle 不允许这样做。

    但是,请注意其他修复:

    • WHERE 子句将JOIN 转换为INNER JOIN。所以没有理由指定LEFT JOIN
    • 表被赋予有意义的表别名(缩写)而不是无意义的别名,例如t1t2。这使得查询更易于编写和阅读。
    • 所有列都是合格的,因此它们所指的表很清楚。尤其建议对相关子查询执行此操作。
    • EXISTS 比聚合更高效。

    【讨论】:

    • 哇!!你是老师吗?你的解释太棒了!!谢谢你:)
    猜你喜欢
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 2010-12-20
    相关资源
    最近更新 更多