这是一个已知的问题,但我找到的最佳解决方案是:

SELECT TOP N *
FROM MyTable
ORDER BY Id DESC

我有一张有很多行的桌子.不可能使用该查询,因为它需要很多时间.那么,在不使用ORDER BY的情况下,如何 Select 最后N行呢?

EDIT

抱歉重复了this one

推荐答案

您也可以通过使用按分区的行数功能来实现这一点.下面是一个很好的例子:

我正在使用Northwind数据库的订单表...现在,让我们检索员工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

Sql相关问答推荐

SQL(PostgreSQL)从条件创建点表

如何使用ROW_NUM() Select 一个没有第二条记录的实例?

在Oracle中,如何删除具有特定值的行,仅当它是重复的行?

如果元素包含通过SQL指定的字符串,则过滤掉数组元素

基于唯一值在Access查询中创建计数器

了解放置时的连接

收到%1、%2或%2邮箱的唯一客户

如何使用SQL Server中的Nodes()方法执行与OPENXML相同的操作

使用generate_series()时,LEFT联接缺少日期/间隔

将一个数组反嵌套到另外两个数组SQL中(Athena/presto)

如何简化此PostgreSQL查询以计算平均值?

将二维数组的第一个和第二个元素取消嵌套到两个一维数组中

MySQL中的递归查询邻接表深度优先?

通过ID和数据找到每个不同的值

如何使用Informix创建一个临时表,将数据从根表导入并使用筛选条件

在Snowflake中如何使用SQL对版本字符串进行排序?

基于源表的 SQL INSERT、UPDATE 和 DELETE

来自 SQL Server 的树层次 struct 图的 JSON

如何找到特定时间间隔内的最大和最小日期?

如何使用子查询锁定此查询中的选定行?