我需要通过计算他的玩家ID出现在另一张桌子上的次数来计算玩家玩过的游戏数量,下面是我玩过的代码:INNER JOIN中的COUNT()行值
SELECT players.playerID, players.fName, players.lName, matches.playerID, COUNT(matches.playerID) AS 'gamesPlayed'
FROM players
INNER JOIN matches
ON matches.playerID = players.playerID
WHERE players.playerID=matches.playerID
ORDER BY gamesPlayed"
目前有2名玩家玩过2场比赛。
当前代码返回1个玩家玩过4场比赛。
我想让COUNT(matches.playerID)返回唯一的匹配,其中players.playerID = matches.playerID。
任何帮助非常感谢!如果你想甚至谁发挥零个游戏,那么玩家
SELECT p.playerID, p.fName, p.lName, COUNT(*) AS gamesPlayed
FROM players p INNER JOIN matches m
ON p.playerID = m.playerID
GROUP BY p.playerID, p.fName, p.lName
ORDER BY gamesPlayed
:
SELECT p.playerID, p.fName, p.lName, COUNT(m.playerID) AS gamesPlayed
FROM players p LEFT JOIN matches m
ON p.playerID = m.playerID
GROUP BY p.playerID, p.fName, p.lName
ORDER BY gamesPlayed
我用COUNT(m.playerID)
代替COUNT(*)
在上面的原因是因为COUNT(*)
在首位:您的查询缺少'GROUP BY',第二个 - 请检查COUNT'接受的参数(在这个查询中它与COUNT(*)'没有什么不同) – zerkms 2015-01-20 23:46:05
包含一个由查询组成的组现在可以工作了,谢谢zerkms – Neil 2015-01-20 23:56:38