我一直在试图找到一种方法来做到这一点,但我似乎无法弄清楚。 下表是我试图“清理”的那张表。删除除了每个字段的最后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