Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql在每个类别中随机选择5个问题_Mysql_Sql - Fatal编程技术网

mysql在每个类别中随机选择5个问题

mysql在每个类别中随机选择5个问题,mysql,sql,Mysql,Sql,假设我在表格中有以下数据: date_added category 15/10/2009 Novels 12/10/2009 Novels 12/10/2009 Novels 11/10/2009 Novels 17/10/2009 Films 16/10/2009 Films 15/10/2009 Films 15/10/2009 Films etc. 我希望SQLMysql查询只返回每个类别中的前两行,即 15/10/2009 Novels 12/10/2009 Novels 17/10/

假设我在表格中有以下数据:

date_added category
15/10/2009 Novels
12/10/2009 Novels
12/10/2009 Novels
11/10/2009 Novels
17/10/2009 Films
16/10/2009 Films
15/10/2009 Films
15/10/2009 Films
etc.
我希望SQLMysql查询只返回每个类别中的前两行,即

15/10/2009 Novels
12/10/2009 Novels
17/10/2009 Films
16/10/2009 Films

这在MySQL中很棘手。我建议使用变量:

select q.*
from (select q.*,
             (@rn := if(@c = category_id, @rn + 1,
                        if(@c := category_id, 1, 1)
                       )
             ) as rn
      from questions q cross join
           (select @rn := 0, @c := -1) params
      order by category_id rand()
     ) q
where rn <= 5;
子查询随机枚举每个类别的问题。外部查询然后为每个类别选择前五个。

我不太擅长mysql。我已经试过了

uuid函数将每次生成通用唯一标识符

ORDER BY RandomID将用于随机选择,因为每次运行查询时,RandomID都是uqique。因此,order by RandomID ASC或DESC将对记录进行完全随机的排序

限制将仅显示5条记录

最终代码:


添加示例表数据和可能的预期结果,以及格式良好的文本。同时显示您当前的查询尝试。@Hadi Nur,在同一页中发布您的图像示例。@Mansoor,新用户不允许包含图像。感谢answe,但代码不起作用,我只是更新了问题感谢answe,但代码不起作用,我只是更新了问题
SELECT q.question_id, q.Question, c.category_id, uuid() AS RandomID
FROM Question q
INNER JOIN Category c
    ON q.Category_id=c.Category_id
ORDER BY RandomID ASC 
LIMIT 5
;