我对MySQL有这样的查询:
select * from table1 LIMIT 10,20
如何使用SQL Server执行此操作?
发布于 2009-03-02 20:00:10
启动SQL SERVER 2005,您可以执行以下操作...
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及更低版本的内容...
SELECT TOP 10 * FROM (SELECT TOP 20 FROM Table ORDER BY Id) ORDER BY Id DESC
发布于 2009-03-02 19:58:12
笨拙,但它会起作用的。
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。你不应该做这种笨拙的变通方法。
发布于 2014-09-17 00:37:33
从SQL SERVER 2012开始,您可以使用OFFSET FETCH子句:
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,则返回的结果集不是预期的结果集。
https://stackoverflow.com/questions/603724
复制相似问题