カテゴリと名前という 2 つの列を持つ MySql テーブルがあります。カテゴリの 4 つの一意の値があり、このテーブルには何千ものレコードがあります。ただし、これらのレコードはすべて、表に示されている 4 つのカテゴリのいずれかに分類されます。
今、私が欲しいのは、出力として、各カテゴリの2つの結果、つまり最初のカテゴリの2つの結果、次に次のカテゴリの2つの結果などを取得することです。
単一のクエリで可能ですか?
カテゴリと名前という 2 つの列を持つ MySql テーブルがあります。カテゴリの 4 つの一意の値があり、このテーブルには何千ものレコードがあります。ただし、これらのレコードはすべて、表に示されている 4 つのカテゴリのいずれかに分類されます。
今、私が欲しいのは、出力として、各カテゴリの2つの結果、つまり最初のカテゴリの2つの結果、次に次のカテゴリの2つの結果などを取得することです。
単一のクエリで可能ですか?
set @num := 0, @cat := '';
select category,name
@num := if(@cat = category, @num + 1, 1) as row_number,
@cat := category as dummy
from MyTable
group by cateogry, name
having row_number <= 2;
これはどうですか?
SELECT * FROM your_table WHERE category = 1 LIMIT 2
UNION
SELECT * FROM your_table WHERE category = 2 LIMIT 2
UNION
SELECT * FROM your_table WHERE category = 3 LIMIT 2
UNION
SELECT * FROM your_table WHERE category = 4 LIMIT 2