我正在尝试从表中删除除最后 10 个之外的所有结果。这应该不会太难,但它们也必须符合一定的标准。
表格如下所示;
chat_id
location_id
user_id
message
created
从技术上讲,它必须删除具有特定 location_id 的所有内容,并在表中保留最后 10 条记录。
Active Record 类可以做到这一点吗?
提前致谢
我正在尝试从表中删除除最后 10 个之外的所有结果。这应该不会太难,但它们也必须符合一定的标准。
表格如下所示;
chat_id
location_id
user_id
message
created
从技术上讲,它必须删除具有特定 location_id 的所有内容,并在表中保留最后 10 条记录。
Active Record 类可以做到这一点吗?
提前致谢
根本不是最佳解决方案,但我想这可能会有所帮助。
我从您的问题中假设标准是特定的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>>;
一会儿会想出活动记录,你可以试试这个 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)
')