我试图删除所有结果,但是从表中删除最后10个结果。这不应该太难,但它们也必须符合某个标准。
表格如下;
chat_id
location_id
user_id
message
created
从技术上讲,它必须使用特定的location_id删除所有内容,并将最后10条记录保留在表中。
Active Record类可以实现吗?
提前谢谢
答案 0 :(得分:0)
根本不是最佳解决方案,但我想这可能有所帮助。
我从您的问题中假设标准是特定的location_id
。
如果创建的字段是时间戳字段,并且最后10条记录表示最近的10条记录,则可以使用与此类似的查询:
DELETE FROM `table`
WHERE created<
(select min(a.cdate) from
(
select b.created as cdate from `table` b
where b.location_id=<<loc_id>>
order by b.created desc limit 10
) a
)
AND location_id=<<loc_id>>;
答案 1 :(得分:0)
在一段时间内你可以尝试这个SQL查询来生成活动记录:
$this->db->query('
delete from table_name where chat_id NOT IN
(select chat_id from table_name where location_id=1292 order by chat_id DESC LIMIT 10)
')