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

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

最佳答案

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;

关于mysql - 获取只有一条相关记录的记录列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16801040/

相关文章:

mysql - 使用sts、maven、mysql和tomcat创建本地环境

php - 如何使用php pdo创建mysql用户

Mysql 填补日期空白

php - 使用php和jquery上传

mysql - Nodejs mysql pool错误无法调用undefined的方法查询

php - 注册时将用户 ID 插入到另一个表中

Php:如何扩展库?

mysql - 从 csv 导入 mysql 时保留特殊字符

mysql - hibernate.hbm2ddl.import_files 不工作

mysql - 在 MySQL 中连接表 A 的行和表 B 的列