[英]Delete all rows from a MYSQL table except TOP/BOTTOM 50 rows
http://sqlfiddle.com/#!2/d21f3/1
我有一個表,其中包含一些條目,我希望在此表中僅保留50條消息,按message_id
排序,並刪除其余條目。
請幫我查詢一下。
提前致謝。
嘗試這個我已經使用ORDER BY message_id DESC
更改它,因為你想要它將刪除所有除了選擇的50個條目,我有別名的查詢,因為你不能使用相同的表來選擇刪除操作
DELETE FROM `chat_history` WHERE id NOT IN ( SELECT t.id FROM
(SELECT id FROM chat_history ORDER BY message_id DESC LIMIT 50 ) t)
例如。
DELETE a
FROM chat_history a
LEFT
JOIN
( SELECT x.message_id
FROM chat_history x
JOIN chat_history y
ON y.message_id >= x.message_id
GROUP
BY x.message_id
HAVING COUNT(*) <= 50
) b
ON b.message_id = a.message_id
WHERE b.message_id IS NULL;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.