TSQL 从表中选择最后 10 行?

Posted

技术标签:

【中文标题】TSQL 从表中选择最后 10 行?【英文标题】:TSQL to select the last 10 rows from a table? 【发布时间】:2011-06-26 17:42:57 【问题描述】:

我有一个包含 3 亿行的表,并且在 [DataDate] 列上有一个聚集索引。

如何选择此表的最后 10 行(我想在表中查找最近的日期)?

数据库:Microsoft SQL Server 2008 R2。

更新

下面的答案完美无缺 - 但前提是 [DataDate] 上有聚集索引。毕竟,该表有 3 亿行,一个简单的查询最终会花费数小时而不是几秒钟来执行。查询计划使用 [DataDate] 上的聚集索引在几十毫秒内获得结果。

【问题讨论】:

你想要多少列?全部?仅数据日期? 所有列,按[DataDate]排序。 【参考方案1】:

TOP

SELECT TOP(10) [DataDate] FROM YourTable ORDER BY [DataDate] DESC   

【讨论】:

正确,因为最好使用索引 @Gravitas:时间戳是相反的:答案是“16 分钟前”与“15 分钟前”。这更正确,因为它选择一列:SELECT * 将使用稍微不同的计划 @gbn:这里的要求是获取最后 10 行,而不是最后 10 个 DataDate 值...这意味着我变得更晚但答案正确;) @Akram Shahda。好的,将其标记为答案。 SO上有很多非常诚实和公平的人,我印象深刻。【参考方案2】:

TOP (Transact-SQL) 指定从查询结果中只返回第一组行。行集可以是行数或百分比。 TOP 表达式可用于 SELECTINSERTUPDATEMERGEDELETE 语句中。

SELECT TOP(10) *
FROM MyTable
ORDER BY DataDate DESC

【讨论】:

谢谢 - 尽管表有 3 亿行(查询计划使用 [DataDate] 上的聚簇索引),但它工作得很好。【参考方案3】:

使用 ORDER BY 进行反向排序并使用 TOP。

【讨论】:

以上是关于TSQL 从表中选择最后 10 行?的主要内容,如果未能解决你的问题,请参考以下文章

在 MariaDB 中,如何从表中选择前 10 行?

从表中随机选择行 - Python Pandas 读取 SQL

有 GUID 列表时如何从表中选择行? [复制]

从表中随机选择行 - Python Pandas Read SQL

从表中选择最后修改的数据记录

从表中选择所有行并仅将不同的值插入到 C# 中另一个位置的数据库中