所以我有三张表,一张是posts,有列id,title,content,timestamp。另一种是tags,有列id,tag,第三个posttags描述了和之间的一对多关系posts,tags有列postid,tagid。
现在,与其在表格中使用诸如hidden,featuredetc 之类的列posts来描述帖子是否应该对所有人可见还是应该显示在特殊功能页面上,我想为什么不使用标签来节省时间。所以我决定所有带有标签的帖子都#featured将成为特色,所有带有标签的帖子#hidden都将被隐藏。
实现第一个很容易,因为我可以使用连接查询,并且我可以在 where 子句中提及WHERE tag='featured',这将为我获得所有精选帖子。
但是以一个标记的帖子为例,#sports如果#hidden我要使用查询
SELECT * FROM posts
INNER JOIN posttags ON posttags.postid = posts.id
INNER JOIN tags ON posttags.tagid = tags.id
WHERE tag !='hidden'
但这仍然会返回已标记的帖子,hidden因为它也已标记sports
PS我的问题与这个问题不同:选择一个没有特定标签的帖子,因为它直接使用tagid,我无法使用双连接来检查标签名称而不是tagid来获得相同的结果。而且我希望在同一查询中检索帖子的其他标签,这是使用该问题答案中的方法无法实现的