【发布时间】:2011-02-11 14:58:49
【问题描述】:
我有一个 mysql 表。它在 id 上有自动增量。但我经常删除行,所以数字到处都是。我需要取出最后 n 行,但由于删除,使用自动递增 id 列的最大值的常用方法效果不佳...
1 - 他们是另一种进入后 50 名的方法吗?
2 - 他们是按实际行号获取行的方法吗?所以如果我有 4 行标记为 1,2,3,4 删除第 2 行那么它将变为 1,2,3 而不是 1,3,4?
【问题讨论】:
-
你签出
LIMIT了吗? -
您永远不需要以这种方式调整自动递增的 ID
-
使用自动递增的 id 列的最大值 不 常见,也不是办法。
-
@kjy112 完全相反,非常糟糕。
-
@Martin - Oracle 中的 Rownum 特定于所选子集,而不是数据库中的行(即 rowid)....如果我在表中有 50 条记录并选择前 10 个 PK ,那么 Oracle rownum 值将是 1-10...如果我选择最后 10 个 PK,那么 Oracle rownum 值将是 1-10...对于完全不同的记录,相同的 rownums。这并不类似于 MySQL 表中的自动增量值(或 Oracle 表中从 SEQUENCE 分配的 PK)。