【发布时间】:2020-09-05 18:39:53
【问题描述】:
我的数据库中有一个名为 mcq-quiz 的表,其中包含 2000 条记录:
id question category
1 q1 c1
2 q2 c1
3 q3 c1
4 q4 c2
5 q5 c2
6 q6 c3
7 q7 c3
8 q8 c4
9 q9 c4
10 q10 c5
我想要来自给定类别的单个记录...但记录应该是随机的。
我尝试了以下查询:
SELECT id, question, category FROM `mcq_quiz` where category in(c1,c2,c3,c4,c5) group by category
它做得很好,但每次都检索相同的记录。但我每次都想要一个新的随机记录。
我也试过rand()函数,它每次都检索相同的记录,但改变了顺序。但我每次都需要随机记录。
【问题讨论】:
-
如果这是您的目标:“我想要给定类别中的单个记录”......然后一个简单的限制和随机顺序有效(在本例中给定类别为 c1):
SELECT * FROM mcq_quiz WHERE category = 'c1' ORDER BY RAND() LIMIT 1
标签: mysql sql random greatest-n-per-group