【问题标题】:How to use LIMIT keyword in SQL Server 2005?如何在 SQL Server 2005 中使用 LIMIT 关键字?
【发布时间】:2010-10-02 02:02:29
【问题描述】:

我找到了一种从this post 的表中选择随机行的方法。建议使用以下查询:

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()。

标签: sql sql-server sql-server-2005 limit


【解决方案1】:

如果您查看 SQL Server 联机丛书中的 SELECT 语句,您会发现可以使用 TOP 关键字来限制结果集。

SELECT TOP 1 * FROM employee

【讨论】:

    【解决方案2】:
    SELECT TOP 1 * FROM Employee ORDER BY newid()
    

    您必须使用 newid() 每行对其进行一次评估。

    【讨论】:

      【解决方案3】:

      我正在使用这个相当简单的方法 (SQL2005) 来限制返回的行数,它也适用于存储过程参数提供的值。

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

      【讨论】:

        猜你喜欢
        • 2011-09-29
        • 2011-03-06
        • 2011-07-06
        • 1970-01-01
        • 2021-11-29
        • 2011-07-08
        • 1970-01-01
        相关资源
        最近更新 更多