簡體   English   中英

MYSQL SELECT DISTINCT記錄分組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM