我一直在試圖找到一種方法來做到這一點,但我似乎無法弄清楚。 下表是我試圖「清理」的那張表。刪除除了每個字段的最後10個以外的所有記錄
-------------
| Messages |
-------------
| ID |
| user_id |
| msg |
| timestamp |
-------------
基本上我想刪除除user_id
最新的10個以外的所有消息。 我真的不知道如何去做這件事。
任何建議將是有用的。
我一直在試圖找到一種方法來做到這一點,但我似乎無法弄清楚。 下表是我試圖「清理」的那張表。刪除除了每個字段的最後10個以外的所有記錄
-------------
| Messages |
-------------
| ID |
| user_id |
| msg |
| timestamp |
-------------
基本上我想刪除除user_id
最新的10個以外的所有消息。 我真的不知道如何去做這件事。
任何建議將是有用的。
見Using LIMIT within GROUP BY to get N results per group?怎麼寫,用於查找最新的10行對每個user_id
查詢。然後,您可以編寫一個查詢,將其作爲子查詢加入,並刪除不在其中的行。
DELETE t1.*
FROM YourTable AS t1
LEFT JOIN (SELECT ...) AS t2
ON t1.id = t2.id
WHERE t2.id IS NULL
用您在其他問題中找到的查詢替換(SELECT ...)
。
您確定要這麼做嗎?爲什麼? – Strawberry
此表中有超過200萬條記錄,我無法保留每位用戶超過10個記錄。他們從不顯示也不會被需要。 – Roel