sqlite:如何向现有 table 添加计数器

sqlite: How to add a counter to an existing table

这是一个特定于 sqlite 的问题。我有一个 table x0 并想添加一个计数器:

ALTER TABLE x0 ADD counter INTEGER;
UPDATE x0 SET counter = ?

与?类似于:@counter := @counter +1.

有什么想法吗?

编辑 1:
我找到了一个简单但不太灵活的解决方案:

UPDATE x0 SET counter = ROWID;

但这不是很灵活。例如,如果我想在本例中使用 MySQL 的组内进行计数:count within groups.

大多数表已经有一个唯一标识符,形式为 rowid,因此您只需将 ? 替换为 rowid

如果你想有连续的值,或者在某个组内重新开始计数,你必须手动计算每行之前有多少其他行:

UPDATE x0
SET counter = (SELECT COUNT(*)
               FROM x0 AS x02
               WHERE x02.rowid <= x0.rowid
               -- AND x02.group_value = x0.group_value
              );