ORA-00904: 标识符无效但表名和列名正确?
Posted
技术标签:
【中文标题】ORA-00904: 标识符无效但表名和列名正确?【英文标题】:ORA-00904: invalid identifier but table and column names are correct? 【发布时间】: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
,你确定这会给出错误..?
它的别名...
我看到这是别名,但消息无关紧要,即好像,没有别名。
如果您创建的表在列名周围使用双引号 "
,则列名区分大小写。
【参考方案1】:
每个“where”子句行后都缺少一个“and”,这可能是问题所在。
where auf_adr.auf_nr = k.auf_nr AND
【讨论】:
检查你的表——它们是用小写字母创建的,表名和列名周围有双引号吗?如果是这样,如果您不在小写选择中的名称周围加上双引号,oracle 将给出错误。一旦你开始在表/列名周围使用双引号,oracle 会确保任何 sql 也有双引号和小写。如果您创建的表格没有双引号,它不会介意任何一种大小写(小写或大写)以上是关于ORA-00904: 标识符无效但表名和列名正确?的主要内容,如果未能解决你的问题,请参考以下文章
SQL 错误:ORA-00904:“GENDER”:无效标识符 00904。00000 -“%s:无效标识符”