2016-11-04 162 views
-2

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

我一直在使用查询草案迄今已: “SELECT * FROM(SELECT * FROM问题ORDER BY RAND())R GROUP BY型;

//表中删除,格式化不能正常使用, 。图像,而不是

MySQL Table

+1

你的问题没有按没有什么意义。什么是“X”?什么不能重复? –

+0

如果你只有8个不同的'critical_thinking_id'值,那么你不能有9个不同的值。 –

+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 
+0

我不确定当q返回错误时WHERE子句是如何进入它的。 – Nnaut

+0

@Nnaut。 。 。这应该是'questionid'。 –

+0

我的表中的列是:ID,问题,Critical_Thinking_ID,那么你是什么意思通过questionid – Nnaut