给定一个项目表、一个标签表和它们之间的一个连接表,什么是实现表单查询的好而有效的方法:
p1 AND p2 AND ... AND pn AND NOT n1 AND NOT n2 ... AND NOT nk
我正在使用 SQL。因此,要找到与所有标签 p1...pn 匹配但不匹配 n1...nk 的所有项目?
是否有好的“标准”解决方案?
最佳答案
如果不知道你的模式很难说,但像这样的东西会起作用:
select article_id from articles
inner join tag t1 on t1.article_id=articles.article_id and t1.tag='included_tag'
inner join tag t2 on t2.article_id=articles.article_id and t2.tag='another_included_tag'
left outer join tag t3 on t3.article_id=articles.article_id and t3.tag='dont_include_tag'
left outer join tag t4 on t4.article_id=articles.article_id and t4.tag='also_dont_include_tag'
where t3.tag_id is null and t4.tag_id is null
对要包含的标签进行内连接,对不包含的标签进行反连接(外连接+必填列为空)
关于sql - 如何在 SQL 中实现 bool 标记搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/602849/