29

この投稿で、テーブルからランダムな行を選択する方法を見つけました。次のクエリを使用することをお勧めします。

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 をサポートしていませんか? もしそうなら、どうすればこれを行うことができますか?

4

3 に答える 3

49

SQL Server Books Online の SELECT ステートメントを見ると、TOP キーワードを使用して結果セットを制限できることがわかります。

SELECT TOP 1 * FROM employee
于 2009-01-18T11:47:20.087 に答える
6
SELECT TOP 1 * FROM Employee ORDER BY newid()

行ごとに 1 回評価するには、 newid() を使用する必要があります。

于 2009-01-18T13:09:09.063 に答える
1

私はこの非常に単純なもの (SQL2005) を使用して、返される行数を制限しています。これは、ストアド プロシージャのパラメーターによって提供される値でも機能します。

DECLARE @Limit int
SET @Limit = 10
SELECT TOP (@Limit) Col1, Col2 FROM SomeTable
于 2010-08-11T10:32:28.357 に答える