随机置换数据的最佳方法是什么? 示例:
id col1 col2 col3
1 data11 data12 data13
2 data21 data22 data23
3 data31 data32 data33
我想在col1和col2中随机置换数据,结果将如下:
id col1 col2 col3
1 data31 data22 data13
2 data11 data12 data23
3 data21 data32 data33
答案 0 :(得分:7)
使用DBMS_RANDOM实现随机性。子查询中的ROW_NUMBER()提供了一个可以在WHERE子句中使用的钩子,否则你将得到一个CROSS JOIN(它不是很随机,可能很大)。
with c1 as ( select col1
, row_number() over (order by dbms_random.value ) rn
from your_table )
, c2 as ( select col2
, row_number() over (order by dbms_random.value ) rn
from your_table )
, c3 as ( select col3
, row_number() over (order by dbms_random.value ) rn
from your_table )
select c1.col1
, c2.col2
, c3.col3
from c1, c2, c3
where c2.rn = c1.rn
and c3.rn = c1.rn;
为获得最佳效果,请记住使用种子。 Find out more