我有一个 post/tag 数据库,其中包含通常的 post、tag 和 tag_post 表。tag_post 表包含 tagid 和 postid 字段。
我需要查询帖子。当我想获取具有特定标签的帖子时,我必须使用连接:
... INNER JOIN tag_post ON post.id = tag_post.postid
WHERE tag_post.tagid = {required_tagid}`
当我想获取具有 tagIdA 和 tagIdB 的帖子时,我必须使用两个连接(我最终同意了)。
现在,我需要查询没有特定标签的帖子。没有多想,我只是将其更改=
为!=
:
... INNER JOIN tag_post ON post.id = tag_post.postid
WHERE tag_post.tagid != {certain_tagid}`
繁荣!错误的逻辑!
我确实想出了这个 - 只是在这里写逻辑:
... INNER JOIN tag_post ON post.id = tag_post.postid
WHERE tag_post.postid NOT IN
(SELECT postid from tag_post where tagid = {certain_tagid})
我知道这会起作用,但是由于我的成长方式,每当我使用子查询编写查询时,我都会感到内疚(无论是否合理)。
建议更好的方法来做到这一点?