使用 Row_Number() 选择不带 ORDER BY ID 的行



我正在尝试选择特定行号之间的行(例如 1 到 50 或 51 到 10 等(。

下面是我的表MatTk架构,所有列都允许空值:

tk_id [varchar(50)] | mat_id [varchar(50)] | ven_id [varchar(50)] | tk_rate [money]
1023                     104                     2212               120.11 

本文使用 Row_Number(( 选择行的子集建议ORDER BY id但我想避免它并以表数据的自然顺序显示它。

另请查看这篇文章 SQL Server 2005 ROW_NUMBER(( 没有 ORDER BY,它建议插入到临时表中,但这不是一个选项,因为MatTk表有数百万行。

有没有办法按行号查询行,而无需按 ID 排序,也不创建临时表?

本文使用 Row_Number(( 选择行的子集建议 ORDER BY id,但我想避免它并以表数据的自然顺序显示它。

没有"表数据的自然顺序">这样的东西
数据库表本质上是无序的。

这意味着从没有order by子句的 select 语句返回的行是任意排序的(请注意,任意与随机不同(。 有关更多信息,请阅读 Michael J. Swart 的《没有 ORDER BY,你不能依赖结果的顺序》

如果你不关心row_number函数中数字的顺序,你可以使用

row_number() over(order by (select null))

但是请注意,使用此方法将返回任意行号 - 这意味着不能信任它们在您每次运行查询时都保持不变。

相关内容

  • 没有找到相关文章

最新更新