MySQL 更新列表计数的查询

MySQL query to update list counts

我有一个 MySQL 问题正在努力解决。

我有两个 table。第一个是 table 成千上万个花园项目,每个项目都有一个 groupid,许多项目属于任何给定的组 id。第二个 table 是一个摘要 table,简单地列出了组 ID 和每个组中的项目数。

我需要一个定期更新这一秒的查询 table 或者 运行 作为批处理过程的一部分。

到目前为止,我已经做到了这一点 - 第一个查询选择了第一个 table 中的组和计数,然后是它们旁边的新计数 - 我不确定如何完成它:

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 的新手。

您可以使用更新连接语法:

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