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

kopug memo

名古屋で働くとあるWebエンジニアの覚書。

SQLで毎回決まったパターンでランダム取得する方法

PostgreSQL

SQLでランダム取得する場合は、

SELECT * FROM TABLE ORDER BY RANDOM();

でいけるんだけど、これだとページング処理するときに、
毎回ランダムで結果が返ってくると困るので、SETSEED()関数を利用する。

SELECT SETSEED(x);
SELECT * FROM TABLE ORDER BY RANDOM();
※ (x) は浮動小数点

これで毎回同じパターンで結果が取得できるので、
xの値を時間だったり、ユーザの個人情報から算出してやればOK