2015-05-09 60 views
1

我有一個MySQL問題,我正在努力解決。MySQL查詢更新列表計數

我有兩個表。首先是一個有數千種花園物品的桌子,每個花園物品都有一個groupid,許多物品落入任何給定的組ID中。第二個表是一個彙總表,簡單列出了每個中的組ID和項目數。

我需要一個定期更新第二個表的查詢o作爲批處理過程的一部分在一夜之間運行。

到目前爲止,我能走到今天 - 第一個查詢選擇組和計數表頭和旁邊的新罪名應該是什麼 - 我不知道如何去完成它:

SELECT l.listid,l.subscribecount,count(ls.listid) 
FROM `lists` as l,`list_items` as ls 
where l.listid=ls.listid 
group by listid; 

update lists  
left join list_items on 
    lists.listid = list_items.listid 
set 
    lists.subscribecount = count(list_items.listid); 

任何幫助將不勝感激,因爲我很新的MySQL。

+0

所以要更新什麼表呀? 'lists'? – Mureinik

+0

你有沒有考慮讓第二張桌子成爲一個視圖? –

+0

我想更新名單Mureinik。 – Del

回答

2

您可以使用更新聯接語法:

UPDATE lists l 
JOIN (SELECT listid, COUNT(*) AS cnt 
     FROM  list_items 
     GROUP BY listid) li ON l.listid = li.listid 
SET l.subscribecount = cnt 
+0

完美的作品!多謝Mureink! – Del