1.利用sql语句筛选重复数据:1>先根据name名字进行分组,然后利用having 子句进行筛选,选出count(name)数量大于1的就是表中名字重复的记录
select name,COUNT(*) ct from bd_dicttype where dr=0 GROUP BY name HAVING ct>1
having一般跟在group by之后,执行记录组选择的一部分来工作的。
where则是执行所有数据来工作的。
再者having可以用聚合函数,如having sum(qty)>1000
select name,COUNT(*) ct from bd_dicttype where dr=0 GROUP BY name HAVING ct>1 ORDER BY name
注意当使用group by having子句时order by 放在最后使用
2.解决mysql sum求和返回null问题或IFNULL应用
问题描述:sum求和要求返回float(或 integer或double等)类型,但当数据库不存在任何符合求和记录时,sum返回null,报类型绑定错误异常(mybatis:
解决办法:IFNULL(SUM(transfer_amount),0),当数据库不存在任何符合求和记录时,sum返回0
例如:SELECT IFNULL(SUM(transfer_amount),0) FROM cm_agent_withdrawal WHERE transfer_status in (1,2,3)
mysql IFNULL(expr1,expr2)
如果 expr1 不是 NULL,IFNULL() 返回 expr1,否则它返回 expr2。
IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。