2015-12-23 62 views
0

我有一個名爲DATA(帶有文件擴展名字段稱爲DATAEXT)的表中的目錄列表,我想在另一個名爲STATS的表中計數。SQLite:填充表與另一個匹配行的數量

在STATS表中,我已經填充了一個STATSEXT列,使用;

INSERT INTO STATS (STATSEXT) SELECT DISTINCT DATAEXT FROM DATA; 

我現在想編寫一個查詢,通過在統計數據表格中列出的所有的單個擴展去,並計算在數據擴展名的文件的數量,把結果放入一個在STATS稱爲FILECOUNT列。

我知道我可以使用:

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

,但它不把結果放到STATS。此外,解決方案需要使用STATS中的STATSEXT值作爲查找的基礎,而不是從DATAEXT值中派生出來,這就是上面所做的。

任何建議感激地收到。我試過使用基於DATAEXT和STATSEXT比較的連接,但它只是計算整個文件列表(大概是因爲所有STATSEXT值都在文件列表中)。

謝謝。

回答

1

而不是使用INSERT INTO STATS (STATSEXT) SELECT DISTINCT DATAEXT FROM DATA;填充的統計資料,你可以填充和一次性設置計數:

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) 
+0

太好了,謝謝。是的,我認爲可能有一種方法可以一次填充所有內容,但實際上我已經簡化了這個問題來問一下,還有其他一些原因,我需要分階段填充表。你的第二個例子很好用,謝謝。 – Andrew17856

相關問題