SQL 问题 - 如何选择包含第二个表中所有引用的所有元组?
协议如下 - 我这里有三个表:
Companies:
ID | NAME | DETAILS
TAGS
ID | TAGNAME
TAGS_COMPANIES
COMPANY_ID | TAGID
使用嵌套查询,我可以检索由某个集合中的标签标记的所有公司,即:
select c.* from companies c where c.id in (select t.company_id where t.tagid in (12,43,67))
上面的查询返回具有标签 id 12、43 或 67 的所有公司,但我需要检索标记为 12 AND 43 AND 67 的所有公司
我该如何在此处重做查询?我正在使用 MySQL
Heres the deal - I have three tables here:
Companies:
ID | NAME | DETAILS
TAGS
ID | TAGNAME
TAGS_COMPANIES
COMPANY_ID | TAGID
Using a nested query I can retrieve all companies that are tagged by tags in a certain set i.e:
select c.* from companies c where c.id in (select t.company_id where t.tagid in (12,43,67))
The above query returns all companies that have an either tag id 12, 43 or 67 but I need to retrieve all companies who are tagged 12 AND 43 AND 67
How would I redo my query here? I'm using MySQL
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不太高效但有效:
使用 HAVING 子句的另一种可能性:
Not too efficient but works:
Another possibility using a HAVING clause:
带有一个子查询。
幻数 3 表示不同的标签计数。
With one subquery.
magic number 3 means different tags count.