gpt4 book ai didi

mysql - 选择所有未标记为隐藏的帖子

转载 作者:行者123 更新时间:2023-11-29 04:23:44 26 4
gpt4 key购买 nike

所以我有三个表,一个是 posts ,有列 id,title,content,timestamp 。另一个是 tags,有 id,tag 列,第三个 posttags 描述了 posts 之间的一对多关系>tags ,包含列 postid,tagid

现在 posts 表中不再有 hidden,featured 等列来描述帖子是应该对所有人可见还是应该显示在特殊的 featured 页面,我想为什么不使用标签来节省时间。因此,我决定所有带有标签 #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 我的问题与这个问题不同:Select a post that does not have a particular tag因为它直接使用 tagid 并且我无法使用双连接来检查标签名称而不是 tagid 来获得相同的结果。而且我还希望在同一查询中检索帖子的其他标签,使用该问题答案中的方法是不可能的

最佳答案

按帖子对标签进行分组,然后使用 HAVING 子句过滤那些不包含 'hidden' 标签的组。由于 MySQL 的隐式类型转换和缺乏真正的 bool 类型,可以这样做:

SELECT   posts.*
FROM posts
JOIN posttags ON posttags.postid = posts.id
JOIN tags ON posttags.tagid = tags.id
GROUP BY posts.id
HAVING NOT SUM(tag='hidden')

关于mysql - 选择所有未标记为隐藏的帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16387233/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com