我想选择仅包含某些值的组。这将排除具有这些值和其他值的组。
详细来说,我想选择在 Type 字段中值为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。请提供任何帮助。
答案 0 :(得分:1)
您可以使用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(*)
说所有行都匹配。