2015-05-09 58 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