Mysql 内部联接中的COUNT()行值
我需要通过计算玩家ID出现在另一张桌子上的次数来计算玩家玩过的游戏数量,以下是我玩过的代码:Mysql 内部联接中的COUNT()行值,mysql,sql,count,inner-join,Mysql,Sql,Count,Inner Join,我需要通过计算玩家ID出现在另一张桌子上的次数来计算玩家玩过的游戏数量,以下是我玩过的代码: SELECT players.playerID, players.fName, players.lName, matches.playerID, COUNT(matches.playerID) AS 'gamesPlayed' FROM players INNER JOIN matches ON matches.playerID = players.pla
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场比赛的玩家
我试图让计数(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(*)
在这个例子中总是至少是一个,而COUNT(m.playerID)
如果唯一匹配的值是NULL
您需要按分组:
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(*)
在这个例子中总是至少是一个,而COUNT(m.playerID)
如果唯一匹配的值是NULL
您需要按分组:
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(*)
在这个例子中总是至少是一个,而COUNT(m.playerID)
如果唯一匹配的值是NULL
您需要按分组:
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(*)
在这个例子中总是至少有一个,而COUNT(m.playerID)
如果唯一匹配的值是NULL
的话,那么COUNT(m.playerID)
可以为零:您的查询缺少GROUP BY,第二步-请检查参数计数接受的内容(在本查询中,它与计数(*)没有区别)-第一步zerkms:您的查询缺少GROUP BY,第二步-请检查参数计数接受的内容(在本查询中,它与计数(*)没有区别)-第一步zerkms:您的查询缺少GROUP BY,第二步-请检查参数计数接受的内容(在此查询中,它与计数(*)没有区别)-第一步zerkms:您的查询缺少GROUP BY,第二步-请检查参数计数接受的内容(在此查询中,它与计数(*)没有区别-第一步zerkms:您的查询缺少GROUP BY
,第二步-请检查COUNT
接受的参数(在这个查询中,它与COUNT(*)
没有区别)在通过查询包含一个组后,现在可以工作了,谢谢zerkmsAt第一步:您的查询缺少group by
,第二步-请检查COUNT
接受的参数(在这个查询中,它与COUNT(*)
)在包含一个组之后,查询现在起作用了,首先感谢zerkmsAt:你的查询缺少groupby
,第二个-请检查COUNT
接受的参数(在这个查询中,它与COUNT(*)没有什么不同)在查询中包含一个groupby之后,现在可以工作了,首先感谢zerkmsAt:您的查询缺少groupby
,第二个-请检查COUNT
接受的参数(在这个查询中,它与COUNT(*)没有区别
)在包含一组查询后,现在开始工作,谢谢zerkmsThank你,决定显示0场比赛的偶数玩家!谢谢你,决定显示0场比赛的偶数玩家!谢谢你,决定显示0场比赛的偶数玩家!谢谢你,决定显示0场比赛的偶数玩家!谢谢你,决定显示0场比赛的偶数玩家!