MYSQL SELECT BY GROUP

时间:2016-11-04 01:20:57

标签: mysql sql

我有一个表,我需要在其中查询9个返回,每个都需要每次都是随机顺序,除了TYPE X的一个值外,它们不能重复。问题是如果使用GROUP BY,它只返回8个结果,但我需要9个,其中2个结果具有相同的TYPE值。

到目前为止我一直使用的草稿查询是: “SELECT * FROM(SELECT * FROM ORDER BY RAND())R GROUP BY type;

//表删除,格式化不工作,图像安装

MySQL Table

1 个答案:

答案 0 :(得分:0)

如果你想从MySQL中的组中获取随机行,我认为最安全的方法是使用变量。这是订购:

select q.*
from (select q.*,
             (@rn := if(@q = questionid, @rn + 1,
                        if(@q := questionid, 1, 1)
                       )
             ) as rn
      from questions q cross join
           (select @q := 0, @rn := 0) params
      order by questionid, rand()
     ) q

然后,如果你知道你有8个问题,但你想从第二个问题得到2个:

where rn = 1 or (questionid = 2 and rn = 2)

或者,如果您希望9个随机问题尽可能不重叠:

order by rn
limit 9