如何用单条MySQL查询获取一张表全量数据及另一张表指定字段?
正确的MySQL关联查询语句解决重复记录问题
你的查询语句错误原因是INNER JOIN未指定两表的关联条件,导致两个表产生笛卡尔积(所有行两两组合),再通过WHERE过滤后出现大量重复且分类名称不匹配的结果。
正确的查询语句需要用ON子句明确tbBooks和tbGenres的关联关系(利用外键genreId关联tbGenres的id),再过滤目标分类:
SELECT a.*, b.name FROM tbBooks AS a INNER JOIN tbGenres AS b ON a.genreId = b.id WHERE a.genreId = 4;
补充说明
INNER JOIN只会返回两表中关联匹配成功的记录,即仅包含有对应分类的书籍。- 如果需要保留
tbBooks中可能存在的无对应分类(genreId为NULL)的书籍,可改用LEFT JOIN:
SELECT a.*, b.name FROM tbBooks AS a LEFT JOIN tbGenres AS b ON a.genreId = b.id WHERE a.genreId = 4;
内容的提问来源于stack exchange,提问作者felipesousac
相关产品推荐
相关产品推荐

