Mysql 获取只有一条相关记录的记录列表

Mysql 获取只有一条相关记录的记录列表,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 ('Jets'); INSERT

我需要一份只有一名成员的团队列表

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
3      Fish
5      Pigs

(这与之前提出的问题相反:请不要打倒我!)

您不需要count中的distinct或p.id-count(*)就可以了,因为它是一个内部连接是的,您是对的,在这种情况下,这是一种一对多的关系,所以这就足够了。我之所以提到它,是因为我坚信尽可能少地使用代码(尽管有可读性之类的警告)。除此之外,更少的代码=更少的bug IMHOYou不需要count-count(*)中的distinct或p.id就可以了,因为这是一个内部连接是的,你是对的,在这种情况下,这是一个一对多的关系,所以这就足够了。我提到它是因为我坚信尽可能使用最少的代码除此之外,代码越少,bug越少
SELECT t.ID, t.Name
FROM Teams t
JOIN Players p ON t.ID=p.Team_ID
GROUP BY t.ID
HAVING COUNT(DISTINCT p.ID) = 1;
select t.id, t.name
from teams t
join players p on p.team_id = t.id
group by t.id, t.name
having count(*) = 1