【发布时间】:2022-01-15 05:24:13
【问题描述】:
我是 Oracle DB 的新手,遇到了一个我不太理解的错误。
我有两个表,table1 和 table2,table1 中的 ID 主键字段是 table2 中的外键。
这是一个运行良好的查询:
select c.* from table1 c
inner join table2 c2 on c.ID = c2.RID
问题是我正在尝试编写一个更复杂的查询,一旦我向查询中添加更多表,我就会收到此错误 ORA-00904: C"."ID": invalid identifier,当我运行以下命令时会收到此错误:
select c.* from table1 c, table3 a, table4 b
inner join table2 c2 on c.ID = c2.RID
我查看了 this thread 寻求帮助,但它并没有真正帮助我的情况(除非我错过了什么,但我对此表示怀疑)
【问题讨论】:
-
今日提示:随处切换到现代、明确的
JOIN语法。更容易编写(没有错误),更容易阅读(和维护),并且在需要时更容易转换为外连接。 -
因为在逗号分隔的连接链之前评估显式连接链......即您的 ON 只能访问 table4 和 table2 列。
-
除了你错误的连接语法之外,如果没有看到所有相关表的实际 CREATE TABLE ddl,真的是不可能说的。
-
它告诉你
table1没有名为"ID"的列。我倾向于相信它。不过,一个有效的测试用例会有很大帮助。
标签: sql database oracle ora-00904