SQL Server 2005中如何使用LIMIT关键字?

30

我在这篇帖子中找到了一种从表中选择随机行的方法。一个建议是使用以下查询:

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吗?如果不支持,那我该如何处理?


ORDER BY rand()将不会按照你的期望进行排序,这一点已经通过SELECT *, rand() FROM employee ORDER BY RAND()得到证明。相反,应该使用ORDER BY newid()。 - Sören Kuklau
3个回答

50

如果你查看SQL Server Books Online中的SELECT语句,你会发现可以使用TOP关键字来限制结果集。

SELECT TOP 1 * FROM employee

7
SELECT TOP 1 * FROM Employee ORDER BY newid()

您需要使用newid()函数才能使其在每行中仅评估一次。


1
我正在使用这个相当简单的方法(SQL2005)来限制返回的行数,它可以与存储过程参数提供的值一起使用。
DECLARE @Limit int
SET @Limit = 10
SELECT TOP (@Limit) Col1, Col2 FROM SomeTable

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接