1

レート制限の目的でアクションを格納するテーブルがあります。私がやりたいのは、「key_action」(レート制限の時間を開始するアクション) を持つ最新の行をフェッチし、その日付以降のすべてのエントリを見つけることです。

現在考えられる唯一の方法は、次の 2 つのクエリを使用することです。

  1. SELECT created_at FROM actions WHERE key_action=1 ORDER BY created_at DESC LIMIT 1

  2. SELECT * FROM actions WHERE created_at >= (created_at from query 1)

これら 2 つのクエリを 1 つに結合する方法はありますか?

4

2 に答える 2

2

クエリ 1 をクエリ 2 のサブクエリにすることができます。

SELECT * 
    FROM actions 
    WHERE created_at >= (SELECT MAX(created_at) 
                             FROM actions 
                             WHERE key_action=1)
于 2011-02-10T16:20:56.010 に答える
1

@Joe Stefanelliの答えは正しいと思っていましたが、WHEREステートメントのサブクエリでは制限が許可されていません。この回避策から、このクエリをまとめました(テストされていません)

SELECT * FROM actions 
JOIN (SELECT created_at FROM actions WHERE key_action=1 ORDER BY created_at DESC LIMIT 1) createdActions
WHERE actions.created_at >= createdActions.created_at
于 2011-02-10T16:36:30.170 に答える