SQL Server:如何从表中选择前10条记录而不使用TOP关键字

时间:2015-02-02 18:35:37

标签: sql-server

有一张包含50条记录的表格。我想在不使用TOP关键字的情况下选择前10条记录。

5 个答案:

答案 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_NUMBERCommon 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。假设您的表格包含IDName列。在这种情况下,您可以使用此类查询:

SELECT t.Id, t.Name
FROM (
    SELECT ID, Name,
    ROW_NUMBER() OVER (ORDER BY Id) AS RowNumber
    FROM TableName
) t
WHERE RowNumber <= 10