0

これが一部の人にとって非常に単純な質問である場合は、お詫び申し上げます。

PKルックアップを使用して非常に単純なテーブルをクエリしていると仮定します。

  • userid-> int(PK)
  • 本体->varchar
  • 時間->int

時間は標準のUNIXタイムスタンプです。(エポックからの秒数)

そのユーザーIDの最後のエントリから1か月分の結果を返したいと思います。

ここで明らかな解決策は、他の場所で最新の挿入時刻を追跡し、レコードが挿入/削除または更新されるたびにそれを更新し、その値に基づいて範囲クエリを実行することです。

したがって、私の質問は次のとおりです。よりシンプルでエレガントなアプローチですか?私は正しい方法を考えていますか、それとも私が気付いていないMySQLの組み込み機能がありますか?

前もって感謝します。

4

1 に答える 1

2

そのような組み込み関数はありません。あなたがする必要があることは(あなたがすでに提案したその余分なテーブルをしない限り)自己結合をすることです。のようなもの(私の頭の上から、テストされていない)

select * 
  from [yourtable] t1
  join [yourtable] t2 
 using (userid)
 where t1.userid = [userid] 
   and t1.time is between t2.time and date_sub(t2.time, interval 1 month);
于 2012-10-08T19:19:04.747 に答える