SQL多表关联查询WHERE子句不生效无返回结果排查求助
问题原因
你的SQL两处INNER JOIN的关联字段逻辑错误,和表结构的关联规则不匹配:
- 关联
posts_tags和tags表时,错误使用posts_tags.post_id = tags.id。posts_tags中对应标签ID的字段是tag_id,tags.id仅能与posts_tags.tag_id匹配,你现有数据中标签ID为1,对应关联表的post_id为2,完全匹配不上。 - 关联
posts表时,错误使用posts.id = tags.id。posts是文章表,应该与posts_tags的post_id字段关联,而非标签表的ID。
你去掉WHERE子句能返回结果,只是测试数据中恰好存在少量ID跨表匹配的记录,一旦加WHERE过滤特定标签,关联错误的问题就会直接导致无结果返回。
修正后的查询语句
SELECT *, tags.titel AS tags FROM posts_tags INNER JOIN tags ON posts_tags.tag_id = tags.id INNER JOIN posts ON posts_tags.post_id = posts.id WHERE tags.titel = 'Baklava';
内容的提问来源于stack exchange,提问作者Mauro
相关产品推荐
相关产品推荐

