【问题标题】:How to get a row count of another table, using SELECT column as a WHERE clause using MySQL如何获取另一个表的行数,使用 SELECT 列作为使用 MySQL 的 WHERE 子句
【发布时间】:2019-11-04 04:37:29
【问题描述】:

我正在从 MySQL 数据库中的“帖子”表中选择帖子,但我希望返回的列之一是使用所选帖子 ID 行的 cmets 表中的评论计数。我的数据库是关系型的,所以评论表有一个帖子 ID 字段(comment_post_id)。这是我所拥有的,但是这个查询在 PHPMYAdmin 中创建了一个语法错误:

SELECT post_id, post_title, post_status, post_image, post_tags, post_views, post_date, user_name, cat_title, 
COUNT(SELECT comment_id FROM comments WHERE comment_post_id = post_id) AS comment_count
FROM posts 
LEFT JOIN users ON post_author = user_id 
LEFT JOIN categories ON post_category_id = cat_id
ORDER BY post_id DESC

Post 和 Comments 表列的布局如下:

帖子: post_id, post_title, post_status, post_image, post_tags, post_views, post_date, post_author, post_category_id

评论: comment_id、comment_post_id、comment_content

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您可以使用此查询在此处获取计数。试试这个方法

    SELECT post_id, post_title, post_status, post_image, post_tags, post_views, post_date, user_name, cat_title, 
    (SELECT COUNT(comment_id) FROM comments WHERE comment_post_id = post_id) AS comment_count
    FROM posts 
    LEFT JOIN users ON post_author = user_id 
    LEFT JOIN categories ON post_category_id = cat_id
    ORDER BY post_id DESC
    

    【讨论】:

      【解决方案2】:

      您可以使用post 加入comments,然后使用count(comment_id)。而不是多余的子查询。

      SELECT 
          post_id,
          post_title,
          post_status,
          post_image,
          post_tags,
          post_views,
          post_date,
          user_name,
          cat_title,
          COUNT(comment_id) AS comment_count
      FROM
          posts
              LEFT JOIN
          users ON post_author = user_id
              LEFT JOIN
          categories ON post_category_id = cat_id
              JOIN
          comments ON post_id = comment_post_id
      ORDER BY post_id DESC
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-06
        • 1970-01-01
        • 1970-01-01
        • 2019-12-22
        • 2020-03-30
        • 2010-10-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多