表包含(pid,播放器,等级,月份,季节)
我正在尝试创建一个查询,显示每个玩家,他们玩了几个月,这个月他们的排名是什么,以及当月有多少玩家玩过。
这是我正在尝试的
SELECT name as Name
, month as Month
, rank as Rank
, (select count(*) from results where month='month') as TotalPlayers
FROM `results`
WHERE season=CurrentSeason
and name="Player"
我的子查询返回的结果是0月。如何才能正确?
答案 0 :(得分:0)
猜猜,但也许这就是你想要的:
SELECT name as Name
, month as Month
, rank as Rank
, TotalPlayers
FROM `results` r
JOIN (
SELECT month
, COUNT(*) as TotalPlayers
FROM results
GROUP BY month
) m
ON m.month=r.month
WHERE season=CurrentSeason
and name="Player"
答案 1 :(得分:0)
您的子查询返回第0个月的结果,因为month
是一个整数,但'month'
是一个字符串。 MySQL尝试将字符串转换为整数。因为没有前导数字,所以整数为0。
相反,您希望使用别名来区分表results
的两个引用。这样,你可以说两者是相等的。
SELECT name as Name,
month as Month,
rank as Rank,
(select count(*) from results r2 where r.month=r2.month) as TotalPlayers
FROM `results` r
WHERE season=CurrentSeason
and name="Player"
子查询的这种结构称为“相关子查询”,因为内部子查询引用外部查询中的表。