首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何用SQL Server实现LIMIT?

如何用SQL Server实现LIMIT?
EN

Stack Overflow用户
提问于 2009-03-02 19:55:00
回答 15查看 384K关注 0票数 157

我对MySQL有这样的查询:

代码语言:javascript
复制
select * from table1 LIMIT 10,20

如何使用SQL Server执行此操作?

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2009-03-02 20:00:10

启动SQL SERVER 2005,您可以执行以下操作...

代码语言:javascript
复制
USE AdventureWorks;
GO
WITH OrderedOrders AS
(
    SELECT SalesOrderID, OrderDate,
    ROW_NUMBER() OVER (ORDER BY OrderDate) AS 'RowNumber'
    FROM Sales.SalesOrderHeader 
) 
SELECT * 
FROM OrderedOrders 
WHERE RowNumber BETWEEN 10 AND 20;

或者类似于2000及更低版本的内容...

代码语言:javascript
复制
SELECT TOP 10 * FROM (SELECT TOP 20 FROM Table ORDER BY Id) ORDER BY Id DESC
票数 140
EN

Stack Overflow用户

发布于 2009-03-02 19:58:12

笨拙,但它会起作用的。

代码语言:javascript
复制
SELECT TOP 10 * FROM table WHERE id NOT IN (SELECT TOP 10 id FROM table ORDER BY id) FROM table ORDER BY id

MSSQL省略LIMIT子句是犯罪行为,IMO。你不应该做这种笨拙的变通方法。

票数 70
EN

Stack Overflow用户

发布于 2014-09-17 00:37:33

从SQL SERVER 2012开始,您可以使用OFFSET FETCH子句:

代码语言:javascript
复制
USE AdventureWorks;
GO
SELECT SalesOrderID, OrderDate
FROM Sales.SalesOrderHeader 
ORDER BY SalesOrderID
    OFFSET 10 ROWS
    FETCH NEXT 10 ROWS ONLY;
GO

http://msdn.microsoft.com/en-us/library/ms188385(v=sql.110).aspx

当order by不是唯一的时,这可能无法正常工作。

如果查询修改为ORDER BY OrderDate,则返回的结果集不是预期的结果集。

票数 53
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/603724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档