【问题标题】:Fetch very last recent single comments on each post获取每个帖子最近的单个评论
【发布时间】:2017-06-28 13:28:03
【问题描述】:

获取每个帖子上最近的单个 cmets

   SELECT * 
     FROM ( `comments` )
LEFT JOIN  `posts` 
       ON  `posts`.`id` =  `comments`.`case_id` 
    WHERE  `comments`.`user_id` =  '8'
 GROUP BY  `comments`.`case_id` 
 ORDER BY  `comments`.`created_date` DESC

【问题讨论】:

  • 请尝试改写这个问题。请参阅How to Ask 了解有关如何提高机会的更多详细信息

标签: php mysql sql database codeigniter


【解决方案1】:

试试这个,如果它回答了您的问题,请告诉我:

SELECT * FROM comments 
RIGHT JOIN posts ON posts.id = comments.case_id 
WHERE comments.user_id = '8' AND comments.created_date = (SELECT MAX(created_date) FROM comments WHERE case_id = posts.id)

【讨论】:

    【解决方案2】:

    为什么不获取属于该用户的帖子 ID 列表:

    SELECT posts.id
    FROM posts
    INNER JOIN comments ON posts.id = comments.case_id
    WHERE comments.user_id = 8
    

    然后foreach($IDs as $id):

    SELECT * FROM comments
    WHERE case_id = ${id}
    ORDER BY created_date DESC
    LIMIT 1
    

    原答案:

    您只是缺少LIMIT 子句:

    SELECT * from comments
    LEFT JOIN posts ON posts.id = comments.case_id
    WHERE comments.user_id = 8
    GROUP BY comments.case_id
    ORDER BY comments.created_date DESC
    LIMIT 1
    

    【讨论】:

    • 他想要每个帖子上最近的单个 cmets
    • 由于问题也在 PHP 中被标记,我假设可以获取帖子列表并循环通过包含 LIMIT 子句的查询。
    • 它只列出了一篇文章。我希望每个帖子都由用户给出最后的评论。
    【解决方案3】:
    SELECT
        *
    FROM
        posts
    LEFT JOIN comments ON comments.case_id = posts.post_id
    WHERE
        comments.comments_id IN (
            SELECT
                MAX(comments_id)
            FROM
                comments
            GROUP BY
                case_id
        )
    AND comments.user_id = '8'
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      • 1970-01-01
      • 2017-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-01
      相关资源
      最近更新 更多