CodeIgniter Active Record - 删除除匹配条件之外的所有10个

时间:2012-08-28 10:38:32

标签: php mysql codeigniter

我试图删除所有结果,但是从表中删除最后10个结果。这不应该太难,但它们也必须符合某个标准。

表格如下;

chat_id
location_id
user_id
message
created

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

Active Record类可以实现吗?

提前谢谢

2 个答案:

答案 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)
')