1

カテゴリごとにクエリを制限したかったのですが、ここで同じトピックをたくさん見ましたが、複雑すぎるので、別のトピックに質問します。

たとえば、私は持っています

id       title        category
1        one          number
2        two          number
3        three        number  
4        four         number
5        a            letter
6        b            letter
7        c            letter

そして、クエリを制限したかったので、カテゴリごとに2つとしましょう。

one
two

a
b
4

3 に答える 3

1

diff トピックから回答を得ました。この同じ質問に立ち寄る他の人のためにここに投稿します

SELECT * FROM (
    SELECT
       table.*,
       @rn := CASE WHEN @category=category THEN @rn + 1 ELSE 1 END AS rn,
       @category := category
    FROM table, (SELECT @rn := 0, @category := NULL) AS vars        
    ORDER BY category
) AS T1
WHERE rn <= 2
于 2012-07-25T12:39:06.387 に答える
0

このリンクを使用して作成されました 、そこに説明があります。これは多数のカテゴリでも機能しますが、適切なキーが定義されていないと非常に遅くなる可能性があることに注意してください。

set @num := 0, @category := '';

select title, category, @num := if(@category = category, @num +1, 1) as row_number,
@category := category as dummy

from test
group by category, title
having row_number <=2;
于 2012-07-25T11:07:30.350 に答える
-3

私があなたを正しく理解しているかどうか教えてください -
それがSQLです -

SELECT * FROM `categories` ORDER BY `id` ASC LIMIT 0,2 

私がしたことは次のとおりです。カテゴリテーブルのすべてのアイテムを選択し、ID行で並べ替え、2つの結果のみに制限し、最初から並べ替えます

于 2012-07-25T10:44:59.970 に答える