概要
- SQLでランダムにレコードを取得する方法を記載ます。
- ①ランダムにソートして取得するクエリ
- ②ランダム10件だけソートして取得するクエリ
①ランダムにソートして取得するクエリ
- 以下のSQLでテーブル
sample_table
からランダムにソートすることができます。
SELECT *
FROM sample_table
ORDER BY RAND();
②ランダム10件だけソートして取得するクエリ
- 以下のSQLでは、テーブル
sample_table
からレコードをランダムに並び替え、結果を10行に制限して取得します。
SELECT *
FROM sample_table
ORDER BY RAND()
LIMIT 10;
- もしくは以下でも可能です。
SELECT *
FROM sample_table
ORDER BY (SELECT RAND())
LIMIT 10;
- また、大規模レコード数があるDBの場合は、
where
句を使った方法もあるみたいです。
MySQLではRANDOM()
関数だとエラーになる
- ちなみに、MySQLでは
RANDOM()
関数を使うと以下のエラーになりました。
SQL Error [1064] [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '() LIMIT 10' at line 3 Error position: line: 2
#1064 - SQL構文エラーです。バージョンに対応するマニュアルを参照して正しい構文を確認してください。 : '()
LIMIT 10' 付近 3 行目
-
RANDOM()
関数は、PostgreSQLなどの一部のデータベースシステムで使用される関数ですね。