我有一個表,其中我需要查詢9返回,其中每個需要是隨機順序每次,他們不能重複,除了一個TYPE X的值。問題是,如果使用GROUP BY,它只返回8個結果,但我需要9個,其中2個結果具有相同的TYPE值。MYSQL SELECT GROUP BY
我一直在使用查詢草案迄今已: 「SELECT * FROM(SELECT * FROM問題ORDER BY RAND())R GROUP BY型;
//表中刪除,格式化不能正常使用, 。圖像,而不是
我有一個表,其中我需要查詢9返回,其中每個需要是隨機順序每次,他們不能重複,除了一個TYPE X的值。問題是,如果使用GROUP BY,它只返回8個結果,但我需要9個,其中2個結果具有相同的TYPE值。MYSQL SELECT GROUP BY
我一直在使用查詢草案迄今已: 「SELECT * FROM(SELECT * FROM問題ORDER BY RAND())R GROUP BY型;
//表中刪除,格式化不能正常使用, 。圖像,而不是
如果你想獲取從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
你的問題沒有按沒有什麼意義。什麼是「X」?什麼不能重複? –
如果你只有8個不同的'critical_thinking_id'值,那麼你不能有9個不同的值。 –
格式化對於數百萬其他問題可以正常工作。你的形象完全沒用。 –