Mysql 如何为每个类别获取具有不同限制的类别级rendom记录

Mysql 如何为每个类别获取具有不同限制的类别级rendom记录,mysql,database,random,row,record,Mysql,Database,Random,Row,Record,我在一个mysql查询中遇到了问题 注意我已经检查了所有答案,请不要将此问题标记为重复 我有一个名为“问题”的表,其中包含que_id、cat_id等字段 我需要从表中获取50条记录,这些记录应该是从cat_id=1随机抽取30条,从cat_id=2随机抽取20条,我想这应该可以做到: (SELECT * FROM questions WHERE cat_id = 1 ORDER BY RAND() LIMIT 30) UNION ALL (SELECT * FROM questions WHE

我在一个mysql查询中遇到了问题

注意我已经检查了所有答案,请不要将此问题标记为重复

我有一个名为“问题”的表,其中包含que_id、cat_id等字段


我需要从表中获取50条记录,这些记录应该是从cat_id=1随机抽取30条,从cat_id=2随机抽取20条,我想这应该可以做到:

(SELECT * FROM questions
WHERE cat_id = 1
ORDER BY RAND()
LIMIT 30)
UNION ALL
(SELECT * FROM questions
WHERE cat_id = 2
ORDER BY RAND()
LIMIT 20)

谢谢,但我读到的“order by rand()”在性能方面很慢……(是吗?是的,是的。你可以搜索其他语句,例如:或。这些问题已经得到了回答:)是的,兄弟,看起来像,但不是,我需要对不同的类别应用不同的限制,请再次阅读我的问题。如果您觉得它是相同的,请给出一些简短的说明或sql查询来执行此操作。括号缺失。关于前面的评论,对于每个类别的不同限制,问题应该是相同的,正如我在回答中向您展示的:1)翻译链接中的任何答案以满足限制和类别2)添加联合所有3)在步骤1中使用相同的查询更改限制和类别现在工作正常谢谢,这只是括号问题,但我仍然不知道如何添加限制类别。对不起,如果你能给我mysql查询,那就更好了
(SELECT * FROM `questions` WHERE cat_id=2 and que_id >= 
    (SELECT FLOOR( MAX(que_id) * RAND()) FROM `questions` ) ORDER BY que_id LIMIT 20) UNION ALL
(SELECT * FROM `questions` WHERE cat_id=1 and que_id >= 
    (SELECT FLOOR( MAX(que_id) * RAND()) FROM `questions` ) ORDER BY que_id LIMIT 30)