MAX(rowid) 给出 n+1 行作为答案

MAX(rowid) giving n+1 rows as answer

"SELECT max(rowid) from studdetail" 这应该在 table 中给出最大行。它在一个地方给出,但在另一个地方给出 n+1(n 是行数)。 可能是什么原因? 我读过类似隐藏行的内容,如果是,请解释一下。 谢谢

max(rowid) 将 return 最高的 rowid。

如果行已被删除,或该rowid 已被跳过(can occur),或rowid 已被手动设置,分配的最高rowid 可能大于实际行数。即一行的 rowid 值不需要准确表示它的位置。

count(rowid) 会 return 行数。

例子

考虑以下:-

DROP TABLE IF EXISTS thetable;
CREATE TABLE IF NOT EXISTS thetable (mycolumn);
INSERT INTO thetable VALUES('A'),('B'),('C'),('D'),('E');
SELECT max(rowid), count(rowid) FROM thetable;
DELETE FROM thetable WHERE mycolumn = 'C';
SELECT max(rowid), count(rowid) FROM thetable;
INSERT INTO thetable (rowid,mycolumn) VALUES(26,'Z');
SELECT max(rowid), count(rowid) FROM thetable;

第一个结果,max(rowid)和count(rowid)都是5 :-

第二个结果,由于删除了中间行,显示 max(rowid) (5)count(rowid) (4) :-

第三个结果,因为 rowid 值被强制为 26,显示出更大的差异 (26 v 5) :-