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()返回一個數字或字符串值,取決於它被使用的上下文環境。