当前位置: 代码迷 >> 综合 >> MySQL去重统计
  详细解决方案

MySQL去重统计

热度:73   发布时间:2024-01-24 08:20:20.0
场景是这样的,要对某一个表里面的数据进行统计,但是可能会有重复数据,下面就是针对person 表,查询表中男女的去重统计,假如有的名字重复了。重名的不查出来
SELECTcount( CASE WHEN p.sex= "01" THEN 1 ELSE NULL END ) AS '男',count( CASE WHEN p.sex= "02" THEN 1 ELSE NULL END ) AS '女'FROM(SELECT DISTINCTt.name,t.sexFROMperson t) p;

       先用 DISTINCT查询出name和sex当做临时表,DISTINCT会把整个要查询的东西作为去重的条件,也就是你查什么,就把什么当做去重条件,这里把name加上,就是把名字和性别当做去重条件了,这样名字和性别相同的就去重了。这时候把查询结果当做临时表,再根据性别做统计就行了。试过了很多方式,本来用case when then count很复杂而且不灵活,就改成了这种方式,简洁明了

  相关解决方案