“从studdetail中选择max(rowid)” 这应该给出表中的最大行。它在一个位置给出,但在另一个位置给出n + 1(n是行数)。 可能是什么原因? 我读到类似隐藏行的内容,如果可以,请解释。 谢谢
答案 0 :(得分:1)
max(rowid)
将返回最高的rowid。
如果已删除行,或者已跳过行ID(can occur),或者已手动设置行ID,则分配的最高行ID可能大于实际行的数量。那是一行的rowid值,不需要完全表示其位置。
count(rowid)
将返回行数。
请考虑以下内容:-
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):-