SQLite3增量部分密钥序列
我试图在SQLite中创建一个递增列,以保持信息在导入的文本日志中的存在顺序,并按项分组SQLite3增量部分密钥序列,sqlite,key,partial,Sqlite,Key,Partial,我试图在SQLite中创建一个递增列,以保持信息在导入的文本日志中的存在顺序,并按项分组 CREATE TABLE log ( row INTEGER PRIMARY KEY AUTOINCREMENT, item TEXT, info TEXT ); 使用下表,我想自动增加相对于item的seq CREATE TABLE test ( item TEXT, seq INTEGER, info TEXT, CONSTRAINT pk_te
CREATE TABLE log (
row INTEGER PRIMARY KEY AUTOINCREMENT,
item TEXT,
info TEXT
);
使用下表,我想自动增加相对于item的seq
CREATE TABLE test (
item TEXT,
seq INTEGER,
info TEXT,
CONSTRAINT pk_test PRIMARY KEY (item, seq)
);
我尝试了各种插入,并不断得到唯一/约束冲突:
INSERT INTO test (item, seq, info)
SELECT item, (SELECT count(item) FROM test t WHERE l.item=t.item) + 1, info
FROM log l;
INSERT INTO test (item, seq, info)
SELECT item, (SELECT COALESCE(MAX(seq),0)+1 FROM test t WHERE l.item=t.item), info
FROM log l;
当我删除约束以查看结果时,seq总是以1结尾。问题是,您正在计算测试表中具有相同项值的行,但该表尚未填充 只需计算日志表中的行即可。 因为您可以看到所有行,但只需要前面的行,所以必须添加另一个筛选器如果没有时间戳之类的内容,请使用rowid:
问题是您正在计算测试表中具有相同项值的行,但该表尚未填充 只需计算日志表中的行即可。 因为您可以看到所有行,但只需要前面的行,所以必须添加另一个筛选器如果没有时间戳之类的内容,请使用rowid:
谢谢这是我的原始问题的一个简单示例,它将两个表中的数据合并到一个序列中,仅限于第三个表中的项目。谢谢!这是我最初问题的一个简单示例,它将两个表中的数据与一个序列合并,仅限于第三个表中的项目。
..., (SELECT COUNT(*)
FROM log AS l2
WHERE l2.item = l.item
AND l2.rowid <= l.rowid)), ...