1
我想在过去的n个月中获取独特玩家的前3个分数。当我尝试执行查询,我得到一个错误:mysql中的子查询问题
在“where子句”
下面是我的查询
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
你确定你需要外部查询吗? - 我可能完全不了解MySQL查询的结构,但是看起来好像你将“DISTINCT”添加到子查询中,根本不需要外部查询。 – Aurimas 2012-02-07 12:18:54
即使你设法纠正这个查询的语法在任何大桌子上极其缓慢。最好将其完全重写,但是你必须澄清你想要得到什么,可能有一些示例数据和预期输出。 – piotrm 2012-02-07 13:37:01
它看起来相当可怕,但你究竟在寻找什么。看起来有一个分数表,你想要某个给定日期的前3名。但是对于你的“f”别名到内部查询的“sc_date”含糊不清。或..你是否在分数表中查找每天可用的前3名得分。所以,如果你有20天的分数,你需要所有20天中的前3个......需要完全不同的查询。 – DRapp 2012-02-07 16:41:27