MySQL查询更新列表计数

时间:2015-05-09 13:39:02

标签: mysql sql sql-update

我有一个MySQL问题,我很难解决。

我有两张桌子。第一个是由数千个花园项目组成的表,每个花园项目都有一个groupid,许多项目都属于任何给定的组ID。第二个表是一个汇总表,只列出了groupids和每个中的项目数。

我需要一个定期更新第二个表的查询,作为批处理过夜的一部分运行。

到目前为止,我已经做到了这一点 - 第一个查询选择第一个表中的组和计数,然后在它们旁边显示新计数应该是什么 - 我不知道如何完成它:

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很新。

1 个答案:

答案 0 :(得分:2)

您可以使用update-join语法:

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