在MySQL中搜索重复项时如何返回所有行?你不得不忍受我,因为我不是MySQL的专家。
这是一个例子。
DATA
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,我不知道如何处理这种情况。我不想将GROUP结果放在一起。我只想列出播放器列中具有重复值的所有行。甚至可以这样做吗?
答案 0 :(得分:0)
您可以通过返回查询结果来执行此操作:
SELECT pl.*
FROM PlayerList pl JOIN
(SELECT Player
FROM `PlayerList`
GROUP BY Player
HAVING COUNT(Player) > 1
) pp
ON pl.Player = pp.Player;