2016-11-04 172 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