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