我有一个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很新。
答案 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