SQL LEFT JOIN使用别名

问题描述 投票:0回答:3

刚开始研究Oracle SQL并尝试使用左连接。获取以下错误,请帮助。

select usr_grpid as "usr_role_role_id" 
from users 
left join user_role on users.usr_role_role_id = user_role.usr_role_role_id;

错误信息:

ORA-00904:“USERS”。“USR_ROLE_ROLE_ID”:无效标识符00904. 00000 - “%s:无效标识符”

实际上第一个表的列名与第二个表不同,尽管数据相同。

oracle
3个回答
1
投票
select usr_grpid as "usr_role_role_id" 
from `users` 
left join user_role on `users`.usr_role_role_id = user_role.usr_role_role_id;

要么

select usr_grpid as "usr_role_role_id" 
from users usr
left join user_role on usr.usr_role_role_id = user_role.usr_role_role_id;

1
投票

试试这个:-

select users.usr_grpid
from users 
left join user_role on users.usr_grpid = user_role.usr_grpid;

注意:请不要在联接中使用列的别名,而是使用实际的列名。


-1
投票

除了不使用allian是连接条件,因为两个表都使用相同的列加入,你也可以使用NATURAL LEFT JOIN

SELECT usr_grpid
FROM users 
NATURAL LEFT JOIN user_role;

但是为每个表设置别名以指定从哪个表获取值会很有帮助。

这样的事情:

SELECT a.usr_grpid
FROM users a
NATURAL LEFT JOIN user_role b;
© www.soinside.com 2019 - 2024. All rights reserved.