mysql中的子查询问题

时间:2012-02-07 11:44:37

标签: mysql subquery

我试图在最近n个月内获得前三名独特球员。当我尝试执行查询时,我收到一个错误:

'where子句'

中的未知列'f.SC_Date'

以下是我的查询

SELECT * from   scores f
WHERE
  SC_Id IN (
          SELECT SC_Id FROM (
                  SELECT SC_Id from scores where DATE_FORMAT( SC_Date, "%Y%m" ) = DATE_FORMAT( f.SC_Date, "%Y%m" ) AND US_Id != 0  ORDER BY SC_Score DESC 
                   LIMIT 3
          ) AS u )ORDER BY DATE_FORMAT( SC_Date, "%Y%m" ) DESC, SC_Score DESC

1 个答案:

答案 0 :(得分:0)

您不能在内部查询中使用f.SC_Date - 请记住括号中的位将首先运行,然后外部位将在结果上运行。

您需要在该select语句中声明scores f才能使其生效。

我希望你根本不需要它 - 比如:

SELECT * from   scores f
WHERE
  SC_Id IN (
          SELECT SC_Id FROM (
                  SELECT SC_Id from scores where DATE_FORMAT( SC_Date, "%Y%m" ) = DATE_FORMAT( SC_Date, "%Y%m" ) AND US_Id != 0  ORDER BY SC_Score DESC 
                   LIMIT 3
          ) AS u )ORDER BY DATE_FORMAT( SC_Date, "%Y%m" ) DESC, SC_Score DESC

应该有效,除非我在这里弄错了你的意图。