Sqlite 记录号(RecNo)的生成及更新到数据表

在使用Sqlite做小项目时需要对下面数据表进行序列号处理,如图

Sqlite 记录号(RecNo)的生成及更新到数据表_第1张图片

开始使用如下语句 按理是对的,

SELECT a.fileId,count(1) as no,a.Name,a.fileName,a.hasTest 
FROM 文件列表 as a,文件列表 as b 
WHERE a.rowid >= b.rowid 

没想到查询结果只有一条

Sqlite 记录号(RecNo)的生成及更新到数据表_第2张图片

问题出在哪里呢?于是修改了一下sql语句

SELECT a.fileId,a.Name,a.fileName,a.hasTest
 FROM 文件列表 as a,文件列表 as b 
WHERE a.rowid >= b.rowid

查询结果如下:

Sqlite 记录号(RecNo)的生成及更新到数据表_第3张图片

从这个结果可以看出查询的基本部分是没有问题,分一下组就应该可以了,于是添加了 GROUP BY a.fileId --添加

SELECT a.fileId,count(1) as no,a.Name,a.fileName,a.hasTest
 FROM 文件列表 as a,文件列表 as b 
WHERE a.rowid >= b.rowid
GROUP BY a.fileId --添加

查询结果就对了

Sqlite 记录号(RecNo)的生成及更新到数据表_第4张图片

下面我们就把生成的记录号写入到表中


UPDATE "文件列表"
set RecNo = (
    SELECT count(1) as no
     FROM 文件列表 as a,文件列表 as b
    WHERE a.rowid >= b.rowid and a.fileId = 文件列表.fileId
    GROUP BY a.fileId--添加
)

Sqlite 记录号(RecNo)的生成及更新到数据表_第5张图片

你可能感兴趣的:(sql相关,Sqlite)