Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite3增量部分密钥序列_Sqlite_Key_Partial - Fatal编程技术网

SQLite3增量部分密钥序列

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

我试图在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_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)), ...