【问题标题】:ORA-00904: invalid identifier but table and column names are correct?ORA-00904: 标识符无效但表名和列名正确?
【发布时间】:2018-05-01 18:21:56
【问题描述】:

我有下面的 SQL 查询,但它给出了错误消息ORA-00904: "KUST_ADR"."KU_NR": invalid identifier,即使这些是正确的表和列名。还有什么原因?

update auf_adr
  set email = (select k.ku_email
               from auf_kopf k join
                    kust_adr ka
                    on k.kunr = ka.ku_nr
               where auf_adr.auf_nr = k.auf_nr and
                     ka.ku_adr_art = 1 and
                     auf_adr.email <> ka.ku_email and
                     (select sum(s.rg_anz)
                      from auf_stat s
                      where s.auf_nr = k.auf_nr
                     ) = 0
              )
    where auf_adr.adr_art = 2 and
          exists (select 1
                  from auf_kopf k join
                       kust_adr ka
                       on k.kunr = ka.ku_nr
                  where auf_adr.auf_nr = k.auf_nr and
                        ka.ku_adr_art = 1 and
                        auf_adr.email <> ka.ku_email and
                        (select sum(s.rg_anz)
                         from auf_stat s
                         where s.auf_nr = k.auf_nr
                        ) = 0
                  );

【问题讨论】:

  • 请张贴表格结构
  • 在更新语句中,没有"KUST_ADR"."KU_NR" 组合但ka.ku_nr,你确定这会给出错误..?
  • 它的别名...
  • 我看到这是别名,但消息无关紧要,即好像,没有别名。
  • 如果您创建的表在列名周围使用双引号 ",则列名区分大小写。

标签: sql oracle ora-00904


【解决方案1】:

每个“where”子句行后都缺少一个“and”,这可能是问题所在。

where auf_adr.auf_nr = k.auf_nr AND

【讨论】:

  • 检查你的表——它们是用小写字母创建的,表名和列名周围有双引号吗?如果是这样,如果您不在小写选择中的名称周围加上双引号,oracle 将给出错误。一旦你开始在表/列名周围使用双引号,oracle 会确保任何 sql 也有双引号和小写。如果您创建的表格没有双引号,它不会介意任何一种大小写(小写或大写)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-08
  • 2022-01-22
  • 2011-08-27
  • 2011-04-21
相关资源
最近更新 更多