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 联机丛书中的 SELECT 语句,您会发现可以使用 TOP 关键字来限制结果集。

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

您必须使用 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 回答