SQL LEFT JOIN使用别名

时间:2017-12-22 07:34:40

标签: oracle

刚开始使用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:无效的标识符"

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

3 个答案:

答案 0 :(得分: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 :(得分:1)

试试这个: -

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

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

答案 2 :(得分:-1)

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

SELECT usr_grpid
FROM users 
NATURAL LEFT JOIN user_role;

但是让每个表的allias指定从哪个表中获取值会很有帮助。

类似的东西:

SELECT a.usr_grpid
FROM users a
NATURAL LEFT JOIN user_role b;