[英]MYSQL SELECT DISTINCT RECORDS GROUPED
我需要從特定的四個類別中選擇“四個不同的隨機記錄”,然后按升序排列。
我嘗試選擇16條隨機記錄,然后按category_id將它們分組
查詢:
SELECT * FROM
(
SELECT
id,
category_id,
description,
RAND() AS rnd
FROM questions
ORDER BY rnd
LIMIT 16
) AS temp
GROUP BY temp.category_id
LIMIT 4
片刻結果:
id category_id description rnd
--------------------------------------------------------------
224 1 Question 7 0.004305024635330797
293 2 Question 10 0.006966075866451558
601 3 Question 2 0.001877430828174046
958 4 Question 54 0.0065207639769844375
其他時刻的結果:
id category_id description rnd
--------------------------------------------------------------
230 1 Question 2 0.01622675640157122
310 2 Question 21 0.005430353810480194
159 4 Question 17 0.021778853630441106
問題在於,並非總是顯示我需要解決此查詢的四個類別,到目前為止,我還沒有找到真正的解決方案。
我需要你的幫助 !
提前致謝 !
關鍵是要首先選擇的類別,然后再回到原來的數據:
select q.*
from (select category_id, substring_index(group_concat(id order by rand()), ',', 1) as id
from questions
group by category_id
order by rand()
limit 4
) c4 join
questions q
on q.id = c4.id
order by category_id
還有其他方法可以做到這一點,例如使用一堆並union all
語句。 但這很籠統,可以輕松更改類別數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.