有一张包含50条记录的表格。我想在不使用TOP关键字的情况下选择前10条记录。
答案 0 :(得分:3)
在SQL Server 2012+中,您可以使用OFFSET ... FETCH
SELECT *
FROM YourTable
ORDER BY YourColumn ASC
OFFSET 0 ROWS
FETCH FIRST 10 ROWS ONLY
答案 1 :(得分:1)
您可以使用ROW_NUMBER
和Common Table Expression
来查询任何数据范围。
USE AdventureWorks2012;
GO
WITH OrderedOrders AS
(
SELECT SalesOrderID, OrderDate,
ROW_NUMBER() OVER (ORDER BY OrderDate) AS RowNumber
FROM Sales.SalesOrderHeader
)
SELECT SalesOrderID, OrderDate, RowNumber
FROM OrderedOrders
WHERE RowNumber <= 10 -- other conditions: RowNumber between 50 and 60
参考ROW NUMBER此处
答案 2 :(得分:1)
尽管内部可能相同,但您可以使用
设置rowcount 10
然后运行查询。
答案 3 :(得分:1)
我想你可以尝试这样的事情:
SELECT t.Id, t.Name FROM Table t
WHERE 10 > (SELECT count(*) FROM Table t2 WHERE t.id > t2.id)
答案 4 :(得分:0)
您可以使用ROW_NUMBER。假设您的表格包含ID
和Name
列。在这种情况下,您可以使用此类查询:
SELECT t.Id, t.Name
FROM (
SELECT ID, Name,
ROW_NUMBER() OVER (ORDER BY Id) AS RowNumber
FROM TableName
) t
WHERE RowNumber <= 10