SQL如何获取两张表匹配行数?MySQL查询点赞回复数语法报错如何解决
问题原因
- 核心语法错误触发点:
Like是MySQL的保留关键字,你直接将其作为表名使用时,MySQL会默认识别为模糊匹配运算符,而非表名,直接触发语法错误。 - 隐藏逻辑问题:你的子查询存在字段歧义,
(SELECT COUNT(*) FROM Like WHERE P.Id = Id)中的未限定表的Id,数据库无法判断是点赞表的ID还是外层帖子表的ID,即使修复关键字问题也会返回错误的统计结果。 - 优化点提示:统计结果未设置别名,后续无法直接通过字段名引用回复数、点赞数。
修正后SQL
SELECT *, -- 统计对应主帖的回复数 (SELECT COUNT(*) FROM Post WHERE ThreadId = P.Id) AS reply_count, -- 统计对应主帖的点赞数,保留关键字用作标识符时必须用反引号包裹 (SELECT COUNT(*) FROM `Like` WHERE `Like`.post_id = P.Id) AS like_count FROM Post AS P WHERE P.ThreadId = 0;
注:如果你的点赞表中关联帖子ID的字段名不是post_id,请替换为你实际的字段名即可
内容的提问来源于stack exchange,提问作者moccajoghurt
相关产品推荐
相关产品推荐

