【问题标题】:MySQL's LIMIT in SQL ServerSQL Server 中 MySQL 的 LIMIT
【发布时间】:2011-12-20 08:46:42
【问题描述】:

我正在尝试了解this 问题的解决方案。

我希望在 SQL Server 中使用的 MySQL 代码是这样的:

SELECT * FROM users WHERE city_id=1 ORDER BY datejoined ASC LIMIT 20,10;

我可以使用更简单的解决方案吗?

(显然,上面代码中的 '20' 是一个参数,但我正在从应用程序代码执行此查询,因此我能够构建像 ...LIMIT " + ((page * 10) - 10) + ",10;"; 这样的字符串。即不需要 tsql 参数传递语法。

【问题讨论】:

标签: mysql sql-server tsql pagination


【解决方案1】:
I am trying to understand the solution to this question

ROWNUMBER() 是一个函数,它会简单地为每一行选择一个行号。

这样考虑,首先你的结果将被选择通过 where 子句标准过滤,然后一个额外的列将添加到你的结果中,这个额外的列将只有编号 1,2,3...。以此类推。

LIMIT 

clause tells MYSQL to limit the number of rows returned. Same u can achieved using RowNumber() function, as now row number have been assigned to every row, u can tell SqlServer in where clause that only fethched rows with RowNumber less than 10. (u will have to use nested query)

【讨论】:

    【解决方案2】:

    您的查询将如下所示

    select * from ( select *, ROW_NUMBER() over (order by datejoined) _ROW_NUMBER from users where city_id = 1 ) a where _ROW_NUMBER between 20 and 30
    

    【讨论】:

      猜你喜欢
      • 2012-05-13
      • 2012-02-19
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 1970-01-01
      相关资源
      最近更新 更多