MySQL LEFT JOIN需返回左表全量记录:GROUP BY致数据丢失求助
解决MySQL GROUP BY丢失举报记录的问题
问题根源
你当前查询里的GROUP BY crt.comment_id是核心问题——它会把同一个comment_id的所有举报记录归为一组,每组仅返回一条结果,所以comment_id=11的两条举报被合并成了一条,导致丢失了其中一条记录。
修正方案
直接移除GROUP BY子句,就能返回comment_report_table中的全部3条举报记录,同时保留原有的关联评论信息和排序逻辑:
SELECT crt.comment_id, crt.user_id as report_user_id, crt.reason as report_reason, ct.id, ct.comment, ct.user_id, ct.c_date FROM $comment_report_table as crt LEFT JOIN $comments_table ct on crt.comment_id = ct.id ORDER BY ct.c_date DESC
补充说明
如果后续有聚合统计需求(比如统计单条评论的举报次数),才需要搭配GROUP BY和聚合函数(如COUNT())使用。但就当前需求而言,要保留所有举报记录,完全不需要分组操作。
内容的提问来源于stack exchange,提问作者Toniq
相关产品推荐
相关产品推荐

