[SQL Server] データをランダムに抽出するための NEWID 関数と件数指定

SQL Server には、ランダムにデータを抽出したい場合などのために、NEWID() という組み込み関数が用意されている。

NEWID (Transact-SQL) - msdn
http://technet.microsoft.com/ja-jp/library/ms190348.aspx

上記の NEWID() と TOP を組み合わせることで、ランダムに指定した件数のデータを抽出する SELECT 文が完成する。
IF EXISTS (SELECT * FROM TEMPDB..SYSOBJECTS WHERE ID = OBJECT_ID('TEMPDB..#HOGE')) DROP TABLE #HOGE
CREATE TABLE #HOGE
(
 NUM  INT IDENTITY
 ,NAME  VARCHAR(20)
)
INSERT INTO
 #HOGE (NAME)
VALUES
 ('Casey ')
 ,('Katelyn')
 ,('Garrett ')
 ,('Leslie ')
 ,('Spencer')
 ,('Monique')
 ,('Martin')
 ,('Alexandria')
 ,('George')
 ,('Holly')
 ,('Manuel')
 ,('Mayra')
 ,('Marcus')
 ,('Krystal')
 ,('Mario')
 ,('Bianca')

-- TOP で件数指定することで、ランダムに取得。
SELECT
 TOP 10
 NUM
 ,NAME
FROM
 #HOGE
ORDER BY NEWID()

DROP TABLE #HOGE

このブログの人気の投稿

Excel で入力した文字に勝手に取り消し線が入る

コピーした行の挿入が表示されない時はフィルタされていないかチェック