1

表包含(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 个月的结果。我如何才能得到正确的结果?

4

2 回答 2

0

您的子查询返回第 0 个月的结果,因为month它是一个整数,但'month'它是一个字符串。MySQL 尝试将字符串转换为整数。因为没有前导数字,所以整数为 0。

相反,您想使用别名来区分 table 的两个引用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"

子查询的这种结构称为“相关子查询”,因为内部子查询引用外部查询中的表。

于 2013-04-21T19:03:14.957 回答
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"
于 2013-04-21T18:31:33.417 回答