所以我有三张表,一张是posts
,有列id,title,content,timestamp
。另一种是tags
,有列id,tag
,第三个posttags
描述了和之间的一对多关系posts
,tags
有列postid,tagid
。
现在,与其在表格中使用诸如hidden,featured
etc 之类的列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来获得相同的结果。而且我希望在同一查询中检索帖子的其他标签,这是使用该问题答案中的方法无法实现的