这是一个已知问题,但我发现的最佳解决方案是:
SELECT TOP N * FROM MyTable ORDER BY Id DESC
我有一张有很多行的桌子。使用该查询是不可能的,因为它需要很多时间。那么如何在不使用 ORDER BY 的情况下选择最后 N 行呢?
您也可以使用 ROW NUMBER BY PARTITION 功能来做到这一点。一个很好的例子可以在这里找到:
我正在使用 Northwind 数据库的 Orders 表… 现在让我们检索员工 5 下的最后 5 个订单: SELECT ORDERID, CUSTOMERID, OrderDate FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY EmployeeID ORDER BY OrderDate DESC) AS OrderedDate,* FROM Orders ) as ordlist WHERE ordlist.EmployeeID = 5 AND ordlist.OrderedDate <= 5
我正在使用 Northwind 数据库的 Orders 表… 现在让我们检索员工 5 下的最后 5 个订单:
SELECT ORDERID, CUSTOMERID, OrderDate FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY EmployeeID ORDER BY OrderDate
DESC) AS OrderedDate,* FROM Orders ) as ordlist
WHERE ordlist.EmployeeID = 5 AND ordlist.OrderedDate <= 5