Pages

2013/10/05

[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
Related Posts Plugin for WordPress, Blogger...