0

テーブルから最後の 10 件を除くすべての結果を削除しようとしています。それはそれほど難しいことではありませんが、特定の基準に一致する必要もあります。

テーブルは次のようになります。

chat_id
location_id
user_id
message
created

技術的には、特定の location_id を持つすべてを削除し、最後の 10 レコードをテーブルに保持する必要があります。

これは Active Record クラスで可能ですか?

前もって感謝します

4

2 に答える 2

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 に答える
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 に答える