如何实现SQL相同ID分组去重后返回对应VAL字段的最大值
解决方案
你之前的SQL逻辑方向没问题,但是过滤条件写错了:你把ID的筛选条件误写在了VAL字段上,自然得不到正确结果。
你要的需求可以直接用聚合查询实现,是非常简洁的单行语句:
SELECT ID, MAX(VAL) AS VAL FROM 你的表名 WHERE ID = '1002' GROUP BY ID;
逻辑验证
完全匹配你列出的三个要求:
- 当ID对应VAL同时存在1和0时,
MAX(VAL)返回1 - 当ID对应VAL全为1时,
MAX(VAL)返回1 - 当ID对应VAL全为0时,
MAX(VAL)返回0
如果需要查询全表所有ID的对应结果,去掉WHERE ID = '1002'的过滤条件即可。
内容的提问来源于stack exchange,提问作者user8512043
相关产品推荐
相关产品推荐

