mysql - 基于多个列返回重复行

标签 mysql group-by duplicates

在 MySQL 中搜索重复项时如何返回所有行?您必须忍受我,因为我不是 MySQL 专家。

这是一个例子。

数据

CREATE TABLE IF NOT EXISTS `PlayerList` (
  `Team` varchar(50) COLLATE latin1_general_ci NOT NULL,
  `Player` varchar(50) COLLATE latin1_general_ci NOT NULL,
  `Games` int(2) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

INSERT INTO `PlayerList` (`Team`, `Player`, `Games`) VALUES
('Team1st', 'Geoff', 8),
('Team1st', 'John, 4),
('Team1st', 'Pete', 6),
('Team2nd', 'Dave', 6),
('Team2nd', 'Bill', 6),
('Team2nd', 'Darren', 6),
('Team2nd', 'Geoff', 4);

我运行下面的代码。查找一名球员为多个球队效力的实例。

SELECT * FROM `PlayerList` GROUP BY Player HAVING COUNT(Player) > 1

但是由于 group by 子句(返回第一行),这仅按预期返回一行。我想返回 SQL 结果中的两行,但由于 WHERE 子句中不能有 COUNT,所以我不知道如何处理这种情况。我不想将结果分组在一起。我只想列出在播放器列中具有重复值的所有行。这还能做到吗?

最佳答案

您可以通过连接回查询结果来做到这一点:

SELECT pl.*
FROM PlayerList pl JOIN
     (SELECT Player
      FROM `PlayerList`
      GROUP BY Player
      HAVING COUNT(Player) > 1
     ) pp
     ON pl.Player = pp.Player;

关于mysql - 基于多个列返回重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28280791/

相关文章:

R:删除跨行和列中的重复值

python - 查找重复邮寄地址的策略

MySQL层次结构

java - CentOS上的Spring Boot启动时间较长

mysql - 如何在 MySQL 中选择字段值

javascript - 没有搜索结果时从div中隐藏div

mysql right join with group by 问题

mysql - 是否可以使用 "group by"更新单列/多列

sql - 删除SQL Server中的重复记录?

apache-spark - 通过 bucketBy 优化 Spark DataFrame/Dataset groupBy