1

我接管了一个包含两个表的数据库,让我们将它们命名entriescomments. 该表包含一个名为 comment_count 的列,其中包含与 中的该行相对应entries的 entry_id in 的行数。commentsentries

最近,由于代码库的版本切换,这种连接变得非常不同步。我需要帮助来构建查询以在 phpmyadmin 中运行以再次同步这些数字。其中的行entries数约为 8000,其中的行comments数约为 80000,因此运行同步查询应该没有任何问题。

结构:

  • entries计数:
  • id| comment_count| ETC
  • comments包含
  • id| blogentry_id| ETC

我能想到的唯一方法是entries用 php 循环表中的每个条目并单独更新,但与纯 SQL 解决方案相比,这似乎非常脆弱。

我会寻求任何帮助!

4

2 回答 2

3
INSERT
INTO    entries (id, comment_count)
SELECT  blogentry_id, COUNT(*) AS cnt
FROM    comments
GROUP BY
        blogentry_id
ON DUPLICATE KEY
UPDATE  comment_count = cnt
于 2010-02-12T14:10:32.377 回答
2

我认为纯 SQL 解决方案会使用子查询从以条目表作为驱动程序的评论表中收集计数。类似下面的内容应该在条目表上“循环”,并为每一行执行子查询(这可能是不正确的术语)并将注释计数更新为辅助表中相应计数的计数。希望有帮助!

UPDATE   entries ent
   SET   comment_count =
         (SELECT   COUNT ( * )
            FROM   comments cmt
           WHERE   cmt.blogentry_id = ent.id)
于 2010-02-12T14:10:17.603 回答