0

「ユーザーによる最近の表示」スクリプトで作業しています。私には 3 つのテーブルがあり、tbl_user, tbl_articles and tbl_recently_viewed.私の tbl_recently_viewed には 3 つのフィールドがuser_id(from tbl_user),article_id(from tbl_articles) and date,あり、2 つの主キーを作成しました。user_id and article_id.私の問題は、tbl_recently_viewed に挿入される特定の user_id を 10 までに制限したいことです。これを行う方法はありますか?

ありがとう。

4

3 に答える 3

1

やりたいことをやるにはきっかけが必要だと思います。行を挿入するだけの場合は、挿入トリガーを使用して最も古い行を削除できます。

以下は、単なる例として意図されています。

CREATE TRIGGER t_keep10 after INSERT ON t
  FOR EACH ROW BEGIN
     if (10 > (select count(*) from t where t.user_id = new.user_id)) then
         delete from t where t.article_id = (select a from (select article_id as a from t t2 where t2.user_id = t.user_id order by date desc limit 1))
     end if;
  END;
|
于 2013-04-23T01:59:40.913 に答える
0

次のクエリを使用して、10 行目以降の行を削除できます。

delete from tbl_recently_viewed where user_id=1 and date <= (select max(date) from (select date from tbl_recently_viewed where user_id=1 order by date desc limit 10,999) as tmp);

または、クエリで最も古い行を削除するだけです:

delete from tbl_recently_viewed where user_id=1 order by date limit 1;
于 2013-04-23T02:12:28.097 に答える