尝试将“select * from equipas”中的“idjogo”从数字更改为实际的“nomejogo”时出现问题
我尝试过这个命令,但输出的行数超过1行。
select nomeequipa, (select nomejogo from videojogo left join equipas on videojogo.idjogo = equipas.idjogo) from equipas;
这是我的代码:
drop table if exists videoequipa;
drop table if exists equipas;
drop table if exists videojogo;
create table videojogo(
idjogo INTEGER(2) AUTO_INCREMENT primary key,
nomejogo NVARCHAR(25),
genero enum('fps','rpg','moba','sports')
);
create table equipas(
idequipa INTEGER(2) AUTO_INCREMENT primary key,
nomeequipa NVARCHAR(25),
idjogo INTEGER(2),
Constraint Fk001 foreign key (idjogo) references videojogo(idjogo)
);
create table videoequipa(
idequipa INTEGER(2),
idjogo INTEGER(2),
primary key (idequipa,idjogo)
);
Insert into videojogo (nomejogo,genero) values ('Counter Strike','fps');
Insert into videojogo (nomejogo,genero) values ('League of Legends','moba');
Insert into videojogo (nomejogo,genero) values ('Dota 2','moba');
Insert into videojogo (nomejogo,genero) values ('Rocket League','sports');
Insert into videojogo (nomejogo,genero) values ('Overwatch','fps');
Insert into equipas (nomeequipa,idjogo) values ('Dignitas',1);
Insert into equipas (nomeequipa,idjogo) values ('Fnatic',1);
Insert into equipas (nomeequipa,idjogo) values ('Fnatic',2);
Insert into equipas (nomeequipa,idjogo) values ('Flypside',4);
Insert into equipas (nomeequipa,idjogo) values ('Titan',3);
Insert into equipas (nomeequipa,idjogo) values ('Ninjas in Pijamas',1);
Insert into equipas (nomeequipa,idjogo) values ('Titan',5);
Insert into equipas (nomeequipa,idjogo) values ('Titan',3);
Insert into equipas (nomeequipa,idjogo) values ('Dignitas',2);
答案 0 :(得分:1)
您不需要在嵌套选择中使用left join
。以下应该有效:
SELECT e.nomeequipa, v.genero
FROM equipas e LEFT JOIN videojogo v ON e.idjogo = v.idjogo;
这是 SQL Fiddle 。