与sql server中的“top”相反,不使用order by,没有键/索引

时间:2012-01-03 12:02:43

标签: sql sql-server

我想从sql server表中检索底部的10个结果。我希望它们是插入的最后10条记录,我该怎么做?

我想写select bottom 10 * from mytable但是这不存在(afaik)。

我想要插入最后10行。 没有时间戳。

5 个答案:

答案 0 :(得分:15)

你不能。

根本不保证select * from mytable返回的最后10条记录将是最后插入的10条记录。没有使用的默认排序。

在反映插入顺序的相应列上需要ORDER BY

答案 1 :(得分:5)

如果该表有自动增量ID(主键),那么您可以这样做:

select top 10 * 
from mytable
order by id desc

答案 2 :(得分:2)

https://stackoverflow.com/a/10636585/2858777

底部为(
  选择前4 *   来自tbl   由n desc命令 ) 选择 * 从底部 按顺序排列

数据来源:

| N | | ---- | | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 |

输出:

| N | | ---- | | 7 | | 8 | | 9 | | 10 |

答案 3 :(得分:0)

在MySQL中,您可以使用select * from table LIMIT 0,10

答案 4 :(得分:0)

您可以使用触发器来完成。

将刚刚插入的行的PK保存在审计表中,同时增加某种索引(标识可能就足够了)。当行数超过10行时删除最旧的。

然后将审计表连接到原始表以获得完整的10行。