在标准sql中,您可以使用 ROW_NUMBER 按所需顺序对行进行编号,例如按id,然后按 ORDER BY 子句首先对块进行排序(第1-9、10、11-19、20、21行),然后使用随机函数在块内无序排列。 下面是mysql。它支持 ROW_NUMBER() 从第8版开始。它的随机函数称为 RAND() . 其他dbms可能有另一个函数来获取随机数。
select t.*,
from mytable
order by
case
when row_number() over (order by id) <= 9 then 1
when row_number() over (order by id) = 10 then 2
when row_number() over (order by id) < 20 then 3
when row_number() over (order by id) = 20 then 4
when row_number() over (order by id) = 21 then 5
else 6
end,
rand();
1条答案
按热度按时间k5hmc34c1#
在标准sql中,您可以使用
ROW_NUMBER
按所需顺序对行进行编号,例如按id,然后按ORDER BY
子句首先对块进行排序(第1-9、10、11-19、20、21行),然后使用随机函数在块内无序排列。下面是mysql。它支持
ROW_NUMBER()
从第8版开始。它的随机函数称为RAND()
. 其他dbms可能有另一个函数来获取随机数。