按自然顺序选择底行

Kim*_*nce 2 sql-server

如何根据自然顺序选择表格的底部X行?我不能做"ORDER BY DESC ...",因为我没有按任何列号订购它......

我正在使用Sql Server 2008 R2.

Mik*_*ll' 8

SQL不保证表中行的顺序.它只保证查询中的行的顺序是显式的ORDER BY.依赖聚集索引也不明智.聚集索引可能会因为充分的原因,错误的原因或根本没有原因而被更改或删除.此外,不保证查询优化器以与聚簇索引相同的顺序返回行.如果没有显式ORDER BY,则无法保证从一次运行到下一次运行以相同的顺序返回行.(优化器可以在它认为应该做出的时候做出不同的决定.)这些事情中的任何一个都可能破坏你的代码.

而是使用查询.在时间戳列上降序排序.(ORDER BY mytimestampcolumn DESC)你可以将顶部的'n'行除去.由于您按降序排序,因此顶行是底行.(无法抗拒.)

如果没有时间戳列,您可以尝试使用自动递增ID号列,尽管它们不能保证严格按时间顺序排列.(获取id号为1000的事务可能会在获得数字999和998的事务之前提交.)