我有一个表,其中我需要查询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个不同的值。 –
格式化对于数百万其他问题可以正常工作。你的形象完全没用。 –