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
我已经仔细检查过,我的语法是正确的(或者至少我相信是这样)。该列存在。我在下面包含了 table 的架构。什么会给我这个错误?
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
table 未在您的查询中使用。我认为您在子查询
中放错了 table 名称
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
名称而不是完整的 table 名称来引用列,它使查询更具可读性。
您编写的子查询有误,您在子查询中放错了 table 名称,并在连接条件中使用了别名。
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);
我正在尝试运行 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
我已经仔细检查过,我的语法是正确的(或者至少我相信是这样)。该列存在。我在下面包含了 table 的架构。什么会给我这个错误?
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
table 未在您的查询中使用。我认为您在子查询
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
名称而不是完整的 table 名称来引用列,它使查询更具可读性。
您编写的子查询有误,您在子查询中放错了 table 名称,并在连接条件中使用了别名。
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);