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
);
这是一个特定于 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
);