mysql - MySQL:仅选择仅具有某些值的组
问题描述
我想选择其中只有某些值的组。这将排除具有这些值和其他值的组。
详细地说,我想选择字段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(*)
说所有行都匹配。
推荐阅读
- php - 我可以存储该函数的字符串结果并将其连接到另一个字符串吗?
- html - 如何使用 Angular 7 表单在单独的行或区域上显示字段
- .net - ASP.Net Core Web API MVC
- python - 连接丢失后如何销毁异步服务器上的协议实例?
- spring - org.springframework.cloud.gateway.config.GatewayAutoConfiguration 方法 websocketRoutingFilter 的参数 0 需要一个 bean 类型
- php - 带有数据表的 PHP MVC(手动)
- javascript - 我们可以获取 javascript 类的属性吗?
- powerbi - DAX 中的 CountIf 公式
- node.js - nodeJS - 如何从联邦快递获取“ESTIMATED_DELIVERY”?
- c# - 如何从我的函数访问数据以在另一个函数中使用?