我有以下两个表
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必须存在的广告素材的查询输出。对于上述示例,由于广告素材2不满足上述条件,因此查询输出中只能存在广告素材1(又名xyz)和3(又名abc)。
所以
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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句