MySQL分组依据:如果至少有一行包含值,如何排除分组?

MySQL分组依据:如果至少有一行包含值,如何排除分组?,mysql,sql,group-by,pivot,having-clause,Mysql,Sql,Group By,Pivot,Having Clause,如果HAVING子句中至少有一行满足某些条件,如何筛选出该组?例如,如果具有下表: 我希望按id1和id2分组,并排除在someText列中至少有一行具有“value”的任何组?所以在我的结果中,(1,1)组应该被排除,但(1,2)、(2,1)和(2,3)组应该被返回。最好,我正在寻找使用HAVING子句的解决方案(这只是一个简单的示例来说明问题-但我正在处理大型查询))您可以使用group by和HAVING以及条件表达式: select id1, id2 from mytable grou

如果HAVING子句中至少有一行满足某些条件,如何筛选出该组?例如,如果具有下表:


我希望按
id1
id2
分组,并排除在
someText
列中至少有一行具有“value”的任何组?所以在我的结果中,(1,1)组应该被排除,但(1,2)、(2,1)和(2,3)组应该被返回。最好,我正在寻找使用HAVING子句的解决方案(这只是一个简单的示例来说明问题-但我正在处理大型查询))

您可以使用
group by
HAVING
以及条件表达式:

select id1, id2
from mytable
group by id1, id2
having max(someText = 'value') = 0

你能解释一下这是怎么回事吗?max为什么会这样工作?@oneCoderToRuleThemAll:在此上下文中,
someText='value'
如果条件已满,则返回1,否则返回0。因此
max((someText='value')=0
意味着:组中没有满足条件的值。MySQL如何计算此值?它是否迭代该组
someText
列的所有值,将此布尔表达式应用于每个值,选择最大值(如果该值存在,则为1)?