SQLite:使用来自另一个

时间:2015-12-23 23:46:43

标签: sqlite

我在一个名为DATA的表中有一个目录列表(带有一个名为DATAEXT的文件扩展名字段),我想在另一个名为STATS的表中计算。

在STATS表中,我已经使用;

填充了一个STATSEXT列
INSERT INTO STATS (STATSEXT) SELECT DISTINCT DATAEXT FROM DATA;

我现在想编写一个查询,该查询遍历STATS表中列出的所有单独扩展,并计算DATA中具有该扩展名的文件数,将结果放入STATS中名为FILECOUNT的列中。

我知道我可以使用:

SELECT DATAEXT,count(*) FROM DATA GROUP BY DATAEXT

但它没有将结果放入STATS。此外,解决方案需要使用STATS中的STATSEXT值作为查找的基础,而不是从DATAEXT值派生它,这就是上面所做的。

感激地收到任何建议。我已尝试使用基于DATAEXT和STATSEXT比较的连接,但它只计算整个文件列表(可能是因为所有STATSEXT值都在某个文件列表中)。

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以一次填充并设置所有计数,而不是使用INSERT INTO STATS (STATSEXT) SELECT DISTINCT DATAEXT FROM DATA;来填充STATS:

INSERT INTO STATS (STATSEXT, FILECOUNT)
SELECT DATAEXT,count(*) FROM DATA GROUP BY DATAEXT;

如果您已经填充了STATS并希望只更新计数,则可以编写子查询更新:

UPDATE STATS
SET FILECOUNT = (SELECT COUNT(1) FROM DATA WHERE DATAEXT = STATSEXT)