0

我正在尝试从表中删除除最后 10 个之外的所有结果。这应该不会太难,但它们也必须符合一定的标准。

表格如下所示;

chat_id
location_id
user_id
message
created

从技术上讲,它必须删除具有特定 location_id 的所有内容,并在表中保留最后 10 条记录。

Active Record 类可以做到这一点吗?

提前致谢

4

2 回答 2

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>>;
于 2012-08-28T11:13:00.420 回答
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)
')
于 2012-08-28T11:42:05.547 回答