この投稿 のテーブルからランダムな行を選択する方法を見つけました。次のクエリを使用することをお勧めします。
SELECT * FROM employee ORDER BY Rand() LIMIT 1
しかし、このクエリをMS SQL 2005で実行すると、次のエラーメッセージが表示されます。
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'LIMIT'.
誰がどこが間違っているのか教えてもらえますか? MS SQLはLIMITをサポートしていませんか?もしそうなら、どうすればこれを行うことができますか?
SQL Server Books OnlineのSELECTステートメントを見ると、TOPキーワードを使用して結果セットを制限できることがわかります。
SELECT TOP 1 * FROM employee
SELECT TOP 1 * FROM Employee ORDER BY newid()
行ごとに1回評価されるようにするには、newid()を使用する必要があります。
私はこのかなり単純なもの(SQL2005)を使用して、返される行の数を制限しています。これは、ストアード・プロシージャー・パラメーターによって提供される値でも機能します。
DECLARE @Limit int
SET @Limit = 10
SELECT TOP (@Limit) Col1, Col2 FROM SomeTable