如何修改SELECT DISTINCT LEFT查询 实现统计匹配数并返回唯一匹配值
实现方案
直接将原有查询的DISTINCT替换为GROUP BY分组,搭配COUNT()聚合函数即可实现需求,原有返回的唯一编码结果完全保留:
SELECT LEFT(car_number, 2) as letter, COUNT(*) as match_count FROM car_owners GROUP BY LEFT(car_number, 2) ORDER BY letter
逻辑说明
GROUP BY LEFT(car_number, 2)会对车牌前两位相同的记录做自动合并,和你原查询DISTINCT的输出效果完全一致,确保返回的letter都是唯一值COUNT(*)会统计每个分组下的总记录条数,你可以根据实际需求修改别名(比如改成total、record_num都可以)
可选扩展
如果需要过滤满足指定数量阈值的分组,可以在GROUP BY后追加HAVING子句,示例如下(只返回匹配记录数大于5的编码):
SELECT LEFT(car_number, 2) as letter, COUNT(*) as match_count FROM car_owners GROUP BY LEFT(car_number, 2) HAVING COUNT(*) > 5 ORDER BY letter
内容的提问来源于stack exchange,提问作者Amani
相关产品推荐
相关产品推荐

