我在一个名为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值都在某个文件列表中)。
谢谢。
答案 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)