gpt4 book ai didi

mysql - 在查询的第一行得到错误的结果

转载 作者:行者123 更新时间:2023-11-29 00:24:39 25 4
gpt4 key购买 nike

我正在使用 mysql,我有一个几乎可以完美运行的查询。我有以下三个表:

文章

  • article_id

评论

  • comment_id
  • article_id

查看

  • view_id
  • article_id

我想将所有这些信息放在一个查询中。我想看看每篇文章有多少浏览量和评论。今天,在一些优秀人士的帮助下,我成功地制作了一个,但我再次陷入困境。

SELECT article.id_article,
COUNT(view.id_article),
COUNT(comment.id_article)
FROM article LEFT JOIN view ON article.id_article = view.id_article
LEFT JOIN comment ON article.id_article = comment.id_article
GROUP BY id_article
ORDER BY id_article

结果是,只有第一行显示错误的结果。我看到了 24 条评论和 3 条观点,而不是 4 条评论和 3 条观点,但不知道为什么,因为其余的都很好。评论的数量似乎翻了四倍,并在评论和 View 的第一行中复制。

最佳答案

您将通过联接获得笛卡尔积:

1 篇文章 * 4 次浏览 * 3 条评论 = 12

不确定为什么会得到 24,可能是第一行有 2 篇具有相同 ID 的文章。

SELECT article.id_article,
COUNT(distinct view.id_view),
COUNT(distinct comment.id_comment)
FROM article LEFT JOIN view ON article.id_article = view.id_article
LEFT JOIN comment ON article.id_article = comment.id_article
GROUP BY id_article
ORDER BY id_article

编写此查询的另一种方法是:

   SELECT article.id_article,
v.n_views,
c.n_comments
FROM article
LEFT JOIN (SELECT article_id,
count(*) n_views
FROM view
GROUP BY article_id) v ON article.id_article = v.id_article
LEFT JOIN (SELECT article_id,
count(*) n_comments
FROM comment
GROUP BY article_id) c ON article.id_article = c.id_article
GROUP BY id_article
ORDER BY id_article

关于mysql - 在查询的第一行得到错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19500351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com