我想选择其中只有特定值的组。这将排除具有这些值和其他值的组。
具体来说,我想选择字段 Type 中值为 1 和 2 的组
- 不包括值为 1、2、3 的组
- 与值为1,2,5的一组相同
- 但是,将选择值为 1 和 2 的组。
例如,考虑下表
Type1 f_Name Product
User A 1 Bob Orange
User A 2 Bob Apple
User B 1 Bill Orange
User B 2 Bill Apple
User B 3 Bill Peach
在这种情况下,我希望用户 A 出现,而不是用户 B。
我曾尝试使用 NOT IN 子句来实现,但数据只会取出值并包含用户不需要的值。在这种情况下,用户 B 出现但没有值 3。请提供任何帮助。
最佳答案
您可以使用group by
和having
来标识组:
select f_name
from t
group by f_name
having sum( (Type1 = 1) ) > 0 and
sum( (Type1 = 2) ) > 0 and
sum( (Type1 in (1, 2) ) = count(*);
having
子句中的每个条件都会计算与该条件匹配的行数。 > 0
表示至少有一行。 = count(*)
表示所有行都匹配。
关于MySQL:只选择只有特定值的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51332436/