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