SQL INNER JOIN查询仅返回首条记录、LEFT JOIN报语法错误该如何解决?
问题核心原因
你的SQL执行异常是因为子句顺序不符合SQL语法规范:WHERE筛选子句必须放在所有JOIN关联声明之后。你将WHERE放在INNER JOIN之前,数据库会先筛选评论表得到第一条匹配pid的记录再做关联,最终只能返回单条结果,这也是你替换为LEFT JOIN后报语法错误的核心原因。
修正后的SQL语句
1. INNER JOIN 版本(仅返回关联到有效用户的评论)
SELECT user.name, comments.cdata, comments.likes FROM comments INNER JOIN user ON comments.uid = user.uid WHERE comments.pid = $postNum ORDER BY comments.cdate
2. LEFT JOIN 版本(保留所有符合条件的评论,无匹配用户时name字段返回NULL)
SELECT user.name, comments.cdata, comments.likes FROM comments LEFT JOIN user ON comments.uid = user.uid WHERE comments.pid = $postNum ORDER BY comments.cdate
补充提示
查询字段和条件最好加上表名前缀,避免两张表存在同名字段时出现语法歧义。
内容的提问来源于stack exchange,提问作者mikeziroer
相关产品推荐
相关产品推荐

