5

たとえば、次の表があります。

id group data
1 1 aaa
2 1 aaa
3 2 aaa
4 2 aaa
5 2 aaa
6 3 aaa
7 3 aaa
8 3 aaa

「SELECT」コマンドで各グループの最初の 2 つのレコードを選択する最良の方法は何ですか? そうする良い方法がない場合、どのルーチンをお勧めしますか?(PHPで)

(モデル結果)

1 1 aaa
2 1 aaa
3 2 aaa
4 2 aaa
6 3 aaa
7 3 aaa

サブクエリで a.id >= b.id によるクロス結合が機能することはわかっていましたが、何百万ものレコードを持つテーブルに適用できる、よりスケーラブルなソリューションを探しています。ありがとう

4

3 に答える 3

8
select a.*
from Tablename a
where 
(
   select count(*) 
   from Tablename as b
   where a.group = b.group and a.id >= b.id
) <= 2
于 2013-04-09T06:34:55.443 に答える