gpt4 book ai didi

sql - 查询在使用连接时抛出 ORA-00904 Invalid Identifier

转载 作者:行者123 更新时间:2023-12-04 19:04:38 27 4
gpt4 key购买 nike

我遇到了一些奇怪的行为,这些行为阻止我以我想要的方式设置查询。将不胜感激任何想法。如果有任何有关表格的信息会有所帮助,请告诉我。我浏览了它们,没有任何东西跳出来可能导致这种情况,但我也不知道我在寻找什么。这是行为。

这工作正常:

Select * 
From
SCHEMA_A.TABLE_A a,
SCHEMA_B.TABLE_B b,
SCHEMA_C.TABLE_C c,
SCHEMA_A.TABLE_D d
Where
b.friend_id = c.friend_id
AND a.group_id = d.group_id
AND b.group_cd = d.group_cd

但这会返回 ORA-00904: b.friend_id = c.friend_id: invalid identifier
Select * 
From
SCHEMA_A.TABLE_A a,
SCHEMA_B.TABLE_B b,
SCHEMA_A.TABLE_D d
Join
SCHEMA_C.TABLE_C c
On
b.friend_id = c.friend_id
Where
a.group_id = d.group_id
AND b.group_cd = d.group_cd

这将返回 ORA-00904: b.group_cd = d.group_cd: invalid identifier
Select * 
From
SCHEMA_A.TABLE_A a,
SCHEMA_B.TABLE_B b
Join
SCHEMA_C.TABLE_C c
On
b.friend_id = c.friend_id
Join
SCHEMA_A.TABLE_D d
On
a.group_id = d.group_id
AND b.group_cd = d.group_cd

这再次起作用:
Select * 
From
SCHEMA_A.TABLE_A a,
SCHEMA_B.TABLE_B b
Join
SCHEMA_C.TABLE_C c
On
b.friend_id = c.friend_id
Join
SCHEMA_A.TABLE_D d
On
b.group_cd = d.group_cd
Where
a.group_id = d.group_id

最佳答案

尝试使用 using专为 join 设计的关键字在相同的列名上

Select * 
From
SCHEMA_A.TABLE_A a,
SCHEMA_B.TABLE_B b
Join
SCHEMA_C.TABLE_C USING(friend_id)
Join
SCHEMA_A.TABLE_D d using(group_id)
where b.group_cd = d.group_cd;

还要确保您使用正确的用户执行其他查询,因为没有正确权限的用户将抛出 invalid identifier .

编辑:实际问题是你加入 TABLE_CTABLE_D但加入条件引用 TABLE_B将其更改为
Select * 
From
SCHEMA_A.TABLE_A a,
SCHEMA_A.TABLE_D d,
SCHEMA_B.TABLE_B b
Join
SCHEMA_C.TABLE_C c using(friend_id)
Where
a.group_id = d.group_id
AND b.group_cd = d.group_cd;

对其他查询应用相同的逻辑,在进行连接时,您不会连接到一组表,而是连接到 from 中提到的最后一个表。因此它无法访问 TABLE_B .

对于可能有 invalid identifier 的其他人错误,请确保您的数据库不区分大小写,否则请确保使用正确的大小写。

关于sql - 查询在使用连接时抛出 ORA-00904 Invalid Identifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28283653/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com