ランダムにN個のレコードをとってくるSQL
あるテーブルからランダムにN個のレコードをとってくるには、次のようにする。
mysql> SELECT *, rand() randval FROM employees ORDER BY randval LIMIT 3;
ポイントは、
- ランダムな値を持つ列を仮想的に追加し、
- それをソートして上位N件だけを取り出す。
ということ。
なるほどねー。
でもこれってインデックスを使わないソートだよね。効率はあんまりよくなさげ。といってもほかの方法があるわけでもないし。