0

我想列出一个体育联盟中只有一个成员的球队中的所有球员的名单。

这是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 ('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

不知道如何将它们分组?

4

2 回答 2

3

如果您想返回只有一名成员的球队中的球员,您可以使用:

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);

请参阅带有演示的 SQL Fiddle

编辑,您也可以使用(从评论移开):

select max(id) id, max(name) name
from players 
group by team_id
having count(team_id) = 1;

请参阅带有演示的 SQL Fiddle

于 2013-05-28T17:30:34.723 回答
0

谢谢蓝脚:

这项工作非常出色:

我想把它贴在这里,以防将来有人搜索它:

select max(id) id, max(name) name
from players 
group by team_id
having count(team_id) = 1;
于 2013-05-28T21:10:01.180 回答