我正在尝试获取过去 n 个月内唯一球员的前 3 名得分。当我尝试执行查询时出现错误:
“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
最佳答案
你不能像那样在内部查询中使用 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
应该可以,除非我误会了您的意图。
关于mysql - mysql中的子查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9175654/