繁体   English   中英

oracle sql无效标识符错误

[英]oracle sql invalid identifier error

我正在尝试在oracle数据库中运行以下语句:

select nfl_player.first_name, nfl_player.last_name
from nfl_player
where player_id IN 
    (select nfl_player.player_id as pid
        from nfl_player
        where pid=nfl_team_roster.player_id
        and nfl_team_roster.team_id= 4
    );

由于某种原因,运行它时,会收到以下消息:

and nfl_team_roster.team_id= 4
    *
ERROR at line 7:
ORA-00904: "NFL_TEAM_ROSTER"."TEAM_ID": invalid identifier

我已经仔细检查过,并且我的语法正确(或者至少我相信是这样)。 该列存在。 我在下面的表格中包含了我的架构。 是什么会给我这个错误?

CREATE TABLE NBA_Team_Roster(
roster_ID number primary key,
team_id number,
player_id number unique,
foreign key (team_id) references NBA_Team(team_id),
foreign key (player_id) references NBA_Player(player_id)
);

任何帮助将不胜感激。

您的查询中未使用nfl_team_roster表。 我认为您在子查询中放错了表名

SELECT first_name, 
       last_name 
FROM   nfl_player nf 
WHERE  player_id IN (SELECT ntr.player_id AS pid 
                     FROM   NBA_Team_Roster ntr --Here 
                     WHERE  nf.pid = ntr.player_id 
                            AND ntr.team_id = 4); 

使用Alias而不是完整的表名来引用列,这会使查询更具可读性。

您编写的子查询中存在错误,您在子查询中放错了表名,并在联接条件中使用了别名。

 select np.first_name, np.last_name
from nfl_player np
where np.player_id IN 
    (select r.player_id as pid
        from NBA_Team_Roster r
        where r.team_id= 4);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM