2013-04-21 132 views
1

表包含(PID,玩家,级别,月,季)从查询中使用结果子查询返回意外的结果

我试图创建一个显示每个球员,他们打出这几个月的查询,什么他们的排名是那个月以及那个月有多少玩家。

这里是我想什么是每月0.1我如何得到这个正确

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

请提供一些示例数据和期望的输出 – 2013-04-21 18:30:27

回答

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" 
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" 

子查询的这种结构,因为所述内子查询是指表中的外部查询被称为“相关子查询”。