具有多个 bool 条件的mysql内连接查询

标签 mysql sql select

我有以下两张表

 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/

相关文章:

mysql - 从子表中为 MySQL View 中的每个父记录获取 N 条记录

mysql - 如何使用MySql搜索连续的数字

mysql - 如何从我的查询中删除 row_num > 2 在 MySql 中?

html - 下拉选择菜单的所有国家/地区语言列表 HTML FORM

javascript - 连续双击会增加 javascript 中的边界框大小

mysql - 需要在mysql中准备一个ranklist

php - MySql 查询 - 检查数据是否存在,如果存在则获取 id,如果不存在则添加数据并获取 id

c# - 如何在 LINQ to Entities (Entity Framewok) 中编写 SQL ORDER BY {value} DESC LIMIT 语句?

html - 我可以通过 HTML 表单将 MYSQL 函数作为值传递吗?

sql - 使用的SQL Server版本不支持datetime2数据类型?