SELECTした結果をランダムに並び変える

プログラミング SQL Server

SQLServerでSELECTした結果をランダムに並び変えるSQLです。

スポンサーリンク

SQLでSELECTした結果をランダムに並び変えて表示する

SQLServerでSELECTした結果をランダムに並び変えるSQLです。

ORDER BYにNewID()関数の値を使います。

生成した値をNEWID()でソート

CREATE TABLE test_table
(
    no   INT
   ,name VARCHAR(20)
)

INSERT INTO test_table VALUES ( 1, '太郎さん' )
INSERT INTO test_table VALUES ( 2, '次郎さん' )
INSERT INTO test_table VALUES ( 3, '三郎さん' )
INSERT INTO test_table VALUES ( 4, '四郎さん' )
INSERT INTO test_table VALUES ( 5, '五郎さん' )

SELECT * FROM test_table ORDER BY NewID()

DROP TABLE test_table

1回目の実行結果は

no    name
3    三郎さん
2    次郎さん
5    五郎さん
1    太郎さん
4    四郎さん

2回目の実行結果は

no    name
1    太郎さん
4    四郎さん
5    五郎さん
2    次郎さん
3    三郎さん

と実行するたびに結果が変わります。

使いどころはスロットマシン

使いどころはスロットマシンなどの出目にでも使えれば良いかと言う事で以下のSQLを作って見ました。

;WITH slot AS
(
SELECT
0 AS slot_numner
UNION all
SELECT
slot_numner + 1
FROM
slot
WHERE slot.slot_numner < 999 ) SELECT TOP 1 RIGHT( '000' + CAST( slot.slot_numner AS VARCHAR(3)), 3) AS slot_number FROM slot ORDER BY NEWID() OPTION ( MAXRECURSION 1000 ) [/sql] 1回目の実行結果は [text] slot_number 062 [/text] 2回目の実行結果は [text] slot_number 080 [/text] 実際は当たり目の確率なども考慮しないといけませんが、ランダムに数字を出すSQLとしては目的を達成したかと。

タイトルとURLをコピーしました