INNER JOIN 中的 COUNT() 行值
COUNT() rows value in an INNER JOIN
我需要通过计算玩家 ID 在另一个 table 上出现的次数来计算玩家玩过的游戏数量,这是我一直在玩的代码:
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场比赛
当前代码returns 1 名球员已经打了 4 场比赛。
我试图让 COUNT(matches.playerID) 到 return 只匹配 players.playerID = matches.playerID.
非常感谢任何帮助!
您需要GROUP BY
:
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(*)
在这种情况下总是至少为 1,而 COUNT(m.playerID)
可以为零如果唯一匹配的值是 NULL
.
首先:您的查询缺少 GROUP BY,其次 - 请检查 COUNT 接受的参数(在此查询中它与 COUNT(*) 没有区别)– zerkms
我需要通过计算玩家 ID 在另一个 table 上出现的次数来计算玩家玩过的游戏数量,这是我一直在玩的代码:
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场比赛
当前代码returns 1 名球员已经打了 4 场比赛。
我试图让 COUNT(matches.playerID) 到 return 只匹配 players.playerID = matches.playerID.
非常感谢任何帮助!
您需要GROUP BY
:
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(*)
在这种情况下总是至少为 1,而 COUNT(m.playerID)
可以为零如果唯一匹配的值是 NULL
.
首先:您的查询缺少 GROUP BY,其次 - 请检查 COUNT 接受的参数(在此查询中它与 COUNT(*) 没有区别)– zerkms