我有以下两张表
Table 1: creatives
creative_id creative_name
1 xyz
2 pqr
3 abc
Table 2: term_relationships
creative_id term_id
1 1
1 2
1 3
2 1
2 2
2 4
3 1
3 2
3 3
我想要连接上述 2 个表以获取包含必须存在 term_id = 1 AND 2 AND 3 的广告素材的查询输出。对于上面的示例,只有广告素材 1(又名 xyz)和 3(又名 abc)必须出现在查询输出中,因为广告素材 2 不满足上述条件。
所以
SELECT *
FROM term_id INNER JOIN
creatives ON term_id.creative_id = creatives.creative_id
WHERE ????
where
子句应该是什么样子?
最佳答案
一种方法是计算匹配项的数量,并检查其总和是否等于您想要的匹配项数量:
SELECT *
FROM creatives
WHERE creative_id IN (SELECT creative_id
FROM term_relationship
WHERE term_id IN (1, 2, 3)
GROUP BY creative_id
HAVING COUNT(*) = 3)
关于具有多个 bool 条件的mysql内连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30723861/