我试图在最近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
答案 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
应该有效,除非我在这里弄错了你的意图。