2011-02-10 6 views
1

私は、レート制限のためのアクションを格納するテーブルを持っています。私がしたいのは、 'key_action'(レート制限の時間を開始するアクション)を持つ最新の行を取り出し、その日付の後にすべてのエントリを見つけることです。MySQLの行に格納されている日付を検索し、その日付以降のすべてのエントリを1つのクエリで検索します。

私は現在、それを行うに考えることができる唯一の方法は、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?

答えて

2

クエリ1クエリのサブクエリ2.

SELECT * 
    FROM actions 
    WHERE created_at >= (SELECT MAX(created_at) 
          FROM actions 
          WHERE key_action=1) 
+0

1はそれに私を打つために一緒に入れ:) – Cfreak

+0

私は、MySQL http://lists.mysql.comでサブクエリでは許可されていなかった印象LIMIT下にありました/ mysql/211237 – DTest

+0

@DTest:代替案で自分の答えを修正しました。 –

1

行うことができます私は@Joeステファネッリの答えは正しかったと思っていると思いますが、制限がWHERE文でサブクエリでは許可されません。 this workaroundから、私はこのクエリ(テストしていない)

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 
関連する問題