2016-12-26 16 views
1

順序集合の最後の行が必要な場合は、通常、派生テーブルを作成して順序を変更します。例えば、自動でテーブルの最後の3つの要素を返すようにidをインクリメント:サブクエリ結果でLIMITを使用できますか?

SELECT * FROM (
    SELECT * FROM table ORDER BY id DESC LIMIT 3 
) t ORDER BY t.id 

LIMITもオフセットしていることができますので、我々は行(たとえば10)の数を知っていれば、同じ結果を達成することができましたこのクエリで事前に:

SELECT * FROM table ORDER BY id LIMIT 3 OFFSET 7 

はそれがcount(*)にテーブルをサブクエリを実行し、動的にその番号を使用してLIMITを構築することは可能ですか?

SELECT * FROM table ORDER BY id LIMIT 3 OFFSET [ select count() -3 ] 
+1

いいえ、 'LIMIT'パラメータはリテラルでなければならず、式にすることはできません。制限を動的に計算する必要がある場合は、ストアード・プロシージャー内の準備済み照会でそれを行うか、クライアント言語で行う必要があります。 – Barmar

+0

私はここで大声で考えていますが、おそらく 'HAVING'を' COUNT() 'と併用することができます。私はその理論をテストしなければならないだろう。 –

+0

可能な複製http://stackoverflow.com/questions/41149708/using-as-to-avoid-same-query-mysql/41150070#41150070 –

答えて

4

いいえ、動的オフセットを指定することはできません。

サブクエリを使用した元のクエリは、これを行う最も簡単な方法です。

関連する問題