【问题标题】:mysql query with countmysql查询计数
【发布时间】:2012-05-31 12:37:34
【问题描述】:

我遇到了自己的 MySQL 查询技能限制,所以我希望一些 SQL 专家可以帮助解决这个问题。我有 2 张桌子:

表“cmets” 评论 ID | comment_post_ID 120 | 620 121 | 620 122 | 620 表“cmets_like” 喜欢_ID |评论 ID 1 | 120 2 | 120

我将通过comment_post_ID 得出具有like group 的评论数量:

COUNT(cmets in cmets like) | comment_post_ID 1 | 620

【问题讨论】:

  • 根据您的示例数据,如何获得 1 的计数?
  • 因为字段“comment_ID”在 cmets_like 中得到了 DISTINCT

标签: mysql sql subquery


【解决方案1】:

这个查询给出了 post_id 和在 comment_like 表中评论的点赞数

 SELECT comment_post_ID, count(like_ID)
 from (select distinct comment_post_ID,like_ID 
       from comments_like cl , comments c
 where cl.comment_ID= c.comment_ID ) as iq
 group by comment_post_ID

【讨论】:

  • 抱歉,cmets_like 没有 cmets_post_id
  • 我会知道 cmets_like 内部的 cmets 数量(不重复),但是,按 comment_post_id 分组
  • 立即尝试。此查询将给出在 comment_like 表中有条目的帖子。
  • 新查询返回有 cmets 的 postID,但我需要 cmets 的数量
  • 几乎完美,必须返回cmets的数量,而不是像number这样的评论
【解决方案2】:

我想子查询在这里是最简单的:

SELECT (SELECT COUNT(like_ID) FROM `comments_like` cl WHERE cl.comment_ID=c.comment_ID) AS comments_in_comments_like, c.comment_post_ID FROM `comments` c

这将产生 2 的点赞数,因为评论 id 120 在您的示例中有 2 个点赞

【讨论】:

    【解决方案3】:
    select cmtLike.like_ID, commnts.comment_post_ID
    from comments_like cmtLike left join comments commnts on cmtLike.comment_ID = commnts.comment_ID
    

    【讨论】:

      【解决方案4】:

      如果您只需要计算comments_like 中列出的每条评论一次,那么:

      select comment_post_ID, count(distinct cl.comment_ID) 
      from comments c, comments_like cl 
      where c.comment_id = cl.comment_id 
      group by comment_post_ID
      

      【讨论】:

        猜你喜欢
        • 2020-05-21
        • 2011-05-22
        • 2013-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-05
        相关资源
        最近更新 更多