Mysql 获取记录列表,这些记录是谁';s
我想要一份体育联盟中只有一名成员的球队的所有球员名单 以下是sql:Mysql 获取记录列表,这些记录是谁';s,mysql,Mysql,我想要一份体育联盟中只有一名成员的球队的所有球员名单 以下是sql: CREATE TABLE `formsfiles`.`Teams` ( `ID` INT NOT NULL AUTO_INCREMENT , `Name` VARCHAR(45) NULL , PRIMARY KEY (`ID`) ); INSERT INTO `Teams` (`Name`) VALUES ('Sharks'); INSERT INTO `Teams` (`Name`) VALUES ('J
CREATE TABLE `formsfiles`.`Teams` (
`ID` INT NOT NULL AUTO_INCREMENT ,
`Name` VARCHAR(45) NULL ,
PRIMARY KEY (`ID`) );
INSERT INTO `Teams` (`Name`) VALUES ('Sharks');
INSERT INTO `Teams` (`Name`) VALUES ('Jets');
INSERT INTO `Teams` (`Name`) VALUES ('Fish');
INSERT INTO `Teams` (`Name`) VALUES ('Dodgers');
INSERT INTO `Teams` (`Name`) VALUES ('Pigs');
CREATE TABLE `Players` (
`ID` INT NOT NULL AUTO_INCREMENT ,
`Name` VARCHAR(45) NULL ,
`Team_ID` INT NULL ,
PRIMARY KEY (`ID`) );
INSERT INTO `Players` (`Name`, `Team_ID`) VALUES ('Jim', '1');
INSERT INTO `Players` (`Name`, `Team_ID`) VALUES ('Tom', '1');
INSERT INTO `Players` (`Name`, `Team_ID`) VALUES ('Harry', '2');
INSERT INTO `Players` (`Name`, `Team_ID`) VALUES ('Dave', '2');
INSERT INTO `Players` (`Name`, `Team_ID`) VALUES ('Tim', '3');
INSERT INTO `Players` (`Name`, `Team_ID`) VALUES ('Trey', '4');
INSERT INTO `Players` (`Name`, `Team_ID`) VALUES ('Jay', '4');
INSERT INTO `Players` (`Name`, `Team_ID`) VALUES ('Steve', '4');
INSERT INTO `Players` (`Name`, `Team_ID`) VALUES ('Ziggy', '5');
INSERT INTO `Players` (`Name`, `Team_ID`) VALUES ('Chris', '4');
结果应该给我:
ID Name
5 Tim
9 Ziggy
不确定如何将他们分组?如果您想让队员回到只有一名队员的队伍中,您可以使用:
select p.id, p.name
from players p
where p.Team_ID in (select Team_ID
from players p
group by Team_ID
having count(Team_ID) = 1);
看
编辑,也可以使用(从注释移动):
如果您想让一个只有一名成员的团队中的球员返回,请参见:
select p.id, p.name
from players p
where p.Team_ID in (select Team_ID
from players p
group by Team_ID
having count(Team_ID) = 1);
看
编辑,也可以使用(从注释移动):
请参见谢谢蓝脚:
这项工作非常出色:
我想把它贴在这里,以防将来有人把它贴在这里:
select max(id) id, max(name) name
from players
group by team_id
having count(team_id) = 1;
谢谢蓝脚:
这项工作非常出色:
我想把它贴在这里,以防将来有人把它贴在这里:
select max(id) id, max(name) name
from players
group by team_id
having count(team_id) = 1;
表单文件和玩家都有pk ID,你想访问哪个ID。表单文件和玩家都有pk ID,你想访问哪个ID。这项工作做得很好!但我有个问题。由于某种原因,它需要大量的时间来处理。200000条记录的持续时间远远超过5分钟。即使代码在与数据库相同的服务器上运行mySQL Workbench。构建一个好的索引会有帮助吗?@JVMX表上有索引吗?您应该在
team\u id
Yes players.team\u id上有一个。(Btree)@JVMX您可以尝试以下方法之一,看看它们是否表现得更好--请看这个演示--这项工作做得非常好!但我有个问题。由于某种原因,它需要大量的时间来处理。200000条记录的持续时间远远超过5分钟。即使代码在与数据库相同的服务器上运行mySQL Workbench。构建一个好的索引会有帮助吗?@JVMX表上有索引吗?您应该在team\u id
Yes players.team\u id上有一个。(Btree)@JVMX您可以尝试以下方法之一,看看它们是否表现得更好--看这个演示--我在我的答案中添加了这个,我只是想在我包含这个之前确保sql fiddle对您有效。我在我的答案中添加了这个,我只是想在我包含这个之前确保sql fiddle对您有效。