テーブルがあり、特定の数のランダムなエントリを取得しようとしています。カテゴリの特定の最大数のエントリを一番上に置き、その後に別のカテゴリの特定の数を配置したいと考えています。
第 1 部門にエントリーがない場合は、第 2 部門のエントリー数にそのエントリー数が追加されます。
たとえば、私のテーブルには 3 つのカテゴリがあります (カテゴリ:「完全」、「部分的」、「空」)。全部で12個のエントリを表示したいです。
「完全」カテゴリについては、8 を表示したいと思います。次に、3 つのパーシャルを表示し、最後に 1 つの空を表示します。
完了が 8 つ未満の場合、たとえば 5 つある場合、完了が 5 つ、部分が 6 つ、空が 1 つ表示されます。(完全な 3 つが欠落しているため、基本パーシャル 3 つ + 余分な 3 つ = 6)。
それを行うためのクエリは何でしょうか?
これが私が実際に持っているクエリです:
SELECT *
FROM items
ORDER BY category='complete' DESC, category='partial' DESC, category DESC, RAND() ASC
LIMIT 12
上記のクエリの問題は、12 個のコンプリートを取得し、探しているものとは正確に一致しないことです。