我接管了一个包含两个表的数据库,我们将它们命名为entries
和comments
。
entries
表包含一个名为comment_count的列,该列包含comments
中与entries
中该行对应的entry_id的行数。
由于代码库的版本切换,最近这种连接变得非常不同步。我需要帮助来构建一个在phpmyadmin中运行的查询,以便再次同步这些数字。 entries
中的行数大约为8000,而comments
中的行数大约为80000,因此运行同步查询不会有任何问题。
结构:
entries
countains:id
| comment_count
|等comments
包含id
| blogentry_id
|等我能想到的唯一方法是使用php循环entries
表中的每个条目并单独更新,但与纯SQL解决方案相比,这似乎极其脆弱。
我会帮忙寻求帮助!
答案 0 :(得分: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
答案 1 :(得分:2)
我认为纯SQL解决方案将使用子查询来调用以从条目表作为驱动程序的注释表中收集计数。类似下面的内容应该在条目表上“循环”,并且每行执行子查询(可能是不正确的术语)并将注释计数更新为辅助表的相应计数。希望有所帮助!
UPDATE entries ent
SET comment_count =
(SELECT COUNT ( * )
FROM comments cmt
WHERE cmt.blogentry_id = ent.id)