我有一個高分表,用於存儲分數和日期列表。我希望找到所有未超過一個月大的前10名的分數。我有以下查詢這部分是什麼,我想:如何查找不在前10位的舊行並使用MySQL刪除它們
SELECT userId FROM highscores
WHERE DATEDIFF(FROM_UNIXTIME(date),
DATE_SUB(CurDate(), INTERVAL 1 MONTH)) < 0
ORDER BY score DESC LIMIT 10,18446744073709551615
做些什麼:
找到所有至少在一個月前提交的分數和不在的排名前10的老分數。
我想它做的事:
找到所有至少在一個月前提交的分數和不在的 所有得分前10
就是這麼簡單?
編輯:我使用的MySQL版本不支持限制它的子查詢。當我嘗試它,我收到以下錯誤:
#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
編輯2:其實我想從表中刪除這些分數,我只是使用SELECT語句,因爲我想這將是簡單將select轉換爲delete,但我不太熟悉子查詢並加入同一個表並從那裏刪除。
您的主機是否支持臨時表?您可以將高分選擇到新的臨時表中。 – Zoredache
@Ed看到我的編輯如下,它解決了極限限制:) – Galz
@Ed? DELETE查詢是否有用?它有用嗎? – Galz