読者です 読者をやめる 読者になる 読者になる

炊きたてのご飯が食べたい

定時に帰れるっていいね。自宅勤務できるっていいね。子どもと炊きたてのご飯が食べられる。アクトインディでは積極的にエンジニアを募集中です。

( 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 が同じグループでランダムソート