( Oracle ) 取得結果を実行毎にランダムにソート 【dbms_random.random】
取得結果を実行毎にランダムにソートしたい時には、
dbms_random.random 関数を ORDER BY句 に指定します。
例)employeeテーブルから全レコードを取得し、ランダムに並べ変え
SELECT * FROM employee ORDER BY dbms_random.random
※dbms_random.randomは、[-2の31乗, 2の31乗]の整数を生成します。
SELECT dbms_random.random FROM dual の出力は
2088038088 (実行毎に[-2の31乗, 2の31乗]の範囲で値を生成)
ORDER BY句にdbms_random.randomを追加しておけば、
同じキー値を持つデータでも、取得タイミング毎に違った順位を持てるので、
ランダム性を担保しなければいけない時など、重宝しそうです。
SELECT * FROM employee ORDER BY job_id, dbms_random.random
※job_id の昇順に並べ変え、job_id が同じグループでランダムソート