Как использовать ключевое слово LIMIT в SQL Server 2005? - PullRequest
25 голосов
/ 18 января 2009

Я нашел способ выбрать случайные строки из таблицы в этом сообщении . Предлагаем использовать следующий запрос:

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? Если так, то как я могу это сделать?

Ответы [ 3 ]

44 голосов
/ 18 января 2009

Если вы посмотрите на инструкцию SELECT в электронной документации по SQL Server, то увидите, что вы можете ограничить набор результатов, используя ключевое слово TOP.

SELECT TOP 1 * FROM employee
5 голосов
/ 18 января 2009
SELECT TOP 1 * FROM Employee ORDER BY newid()

Вы должны использовать newid (), чтобы он оценивался один раз в строке.

0 голосов
/ 11 августа 2010

Я использую этот довольно простой (SQL2005) для ограничения числа возвращаемых строк, что также будет работать со значением, предоставленным параметром хранимой процедуры.

DECLARE @Limit int
SET @Limit = 10
SELECT TOP (@Limit) Col1, Col2 FROM SomeTable
...