php - 从转换表中选择完全匹配的记录

标签 php mysql

大家好,我有一个表,其中有两列 trial_id , category_id

我附上图片以便它变得更清晰。

当我想要包含 category_idtrial_id 记录时,我可以运行类似

的查询
 SELECT * FROM `trial_category` WHERE category_id IN ( 259, 260 )

你可以设置 trial_id 将这两个 category_id 关联起来

我的问题是,现在我想要与这两个 category_id 完全匹配的 trial_id 我该怎么做?

意味着如果你注意到只有 trial_id 73 有 259 和 260 category_id 那么我的结果应该只有 73。

谢谢 enter image description here

最佳答案

这是一个“set-within-sets”子查询的例子。这是一个使用 group byhaving 子句的解决方案:

SELECT trial_id
FROM trial_category
group by trial_id
having sum(case when category_id = 259 then 1 else 0 end) > 0 and
       sum(case when category_id = 260 then 1 else 0 end) > 0;

当其中一行具有特定类别时,having 子句中的每个条件都得到满足。您可以看到这如何轻松地推广到更多类别。或者甚至是案例 259 而不是 260 和 261。

如果您恰好想要这两个类别,您可以通过添加以下子句过滤没有任何其他类别的行:

       sum(case when category_id not in (259, 260) then 1 else 0 end) = 0;

在 ( 259, 260 )

关于php - 从转换表中选择完全匹配的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17445914/

相关文章:

php - 识别 Midp 2.0 与 Midp 2.1 与 Android

php - 如何使用从数据库导入的值

MySQL:如何测试我的数据库架构(外键一致性、存储过程等)

mysql - 使用查询插入到mysql中的表中

MySQL即使行不存在也将行转为列

php - Laravel本地化,重定向到右 View

php - 使用数组元素更新 Postgres 表

mysql - SQL查询从按单列分组的多条记录中获取单条记录

javascript - 如何使用表单中的输入变量来更新另一个 php 的图表?

views - PhalconPHP 中的 *.volt 和 *.phtml 文件有什么区别?