0

さまざまなカテゴリのテーブルがあります。各カテゴリから 2 つのランダムな行を返すことは可能ですか?

私のテーブル:

-----------------------------
| ID | CATEGORY             |
-----------------------------
| 1  | PINK                 |
| 2  | GREEN                |
| 3  | PINK                 |
| 4  | GREEN                |
| 5  | BLUE                 |
| 6  | BLUE                 |
| 7  | BLUE                 |
| 8  | PINK                 |
| 9  | GREEN                |
-----------------------------

出力したいもの:

-----------------------------
| ID | CATEGORY             |
-----------------------------
| 1  | PINK                 |
| 8  | PINK                 |
| 2  | GREEN                |
| 4  | GREEN                |
| 6  | BLUE                 |
| 7  | BLUE                 |
-----------------------------
4

2 に答える 2

0
select distinct c1.ID, c2.category
from mytable c1
join mytable c2 ON c1.category = c2.category and c1.ID <> c2.ID
group by c1.category, c2.ID;
于 2013-07-19T19:55:09.107 に答える
0

各カテゴリから 2 つのランダムな行を取得する方法を次に示します。

select t.*
from t join
     (select t.category, substring_index(group_concat(id order by rand()), ',', 2) as ids
      from t
      group by category
     ) tc
     on find_in_set(t.id, tc.ids) > 0;

IDgroup_concat()をランダムな順序でリストに入れ、最初の 2 つを選択し、戻ってこれらの ID を持つ行を見つけます。2 つ以上の ID に簡単に一般化できます。

于 2013-07-19T20:18:16.513 に答える