selectでランダムな順番でレコードをソートする (ランダムにレコードを取得する) - SQL Server

SQL Serverでランダムにレコードを取得するSQLを紹介します。

概要

SQL Serverでランダムにレコードを取得したい場合には、ランダムな順番でレコードをソートし、先頭から必要な件数のレコードを取得することで、 テーブルからランダムにレコードを取得できます。
SQL Serverでランダムな順番でレコードをソートする場合はNEWID() 関数を利用します。

書式 :ランダムな順番でのソート

SQL Serverでランダムな順番でレコードをソートする場合は以下のSQLを実行します。
select [列名] from [テーブル名] order by NEWID()

書式 : ランダムにレコードを取得する

ランダムにレコードを取得する場合は次のSQLを実行するとランダムにレコードが取得できます。
select top([レコード取得件数]) [列名] from [テーブル名] order by NEWID()

contentsテーブルをランダムな順番でソートします。
select * from contents order by NEWID()

contentsテーブルからランダムに1件のレコードを取得します。
select top(1) * from contents order by NEWID()

補足: NEWID() 関数

NEWID()関数は呼び出されると一意のID文字列を返します。
下記のSQLを実行した場合の結果は以下の通りです。
select NEWID()

実行結果
(列名なし)
441B38F0-0E7C-444F-B46D-E87E41B32AC4

NEWID() 関数は実行されれるたびに毎回違う一意の値を返しますので、NEWID() の値でソートすることにより毎回違った並び順で選択結果を得ることができます。

著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2020-08-19
作成日: 2011-02-20
iPentec all rights reserverd.