mysql count(0) count(*) count(主键) count(非空字段) 效率比较 写代码的时候经理在背后说了一句count(0)的效率高于count(*) ,索性全部测试了一下 结论:1.count(0)效率等于count(*)等于count(主键)等于count(非空字段) 但是 唯一的区别就是count只会统计非空字段 系统配置 processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 85 model n
1.单表查询 SELECT COUNT(CASE WHEN (字段=值列1) THEN reportstatus END) AS 已上报,COUNT(CASE WHEN (字段=值列0) THEN 字段 END) AS 未上报, 字段部门名称 AS NAME,LEFT(字段编号,限制长度6) AS CODE FROM 表名 WHERE 判断 GROUP BY LEFT(字段编号,限制长度6) 2.两表查询 SELECT a.已上报,a.未上报,a.别名,a.别名,d.关联字段 FROM ( SE
sql某一表中重复某一字段重复记录查询与处理 1.查询出重复记录 select 重复记录字段 form 数据表 group by houseno having count(重复记录字段)>1 2.重复记录只显示一条ID值最小或最大的记录 select id,* from 数据表 where houseno (select 重复记录字段 form 数据表 group by 重复记录 字段 having count(重复记录字段)>1 ) 这样把houseno重复的的ID值全部显示
聚合函数中如果想汇总某一类数据,可以在括号中增加条件: sum(case when 字段>0 then 1 else 0 end) as 字段 *注意:count(case when 字段>0 then 1 else 0 end) as 字段 count函数不管记录内容是0或1,它的作用只是计算记录数,如果你要计算次数,用sum(case when 字段>0 then 1 else 0 end) as 字段, 因为你前面计算出来的是0和1的全部次数 或者你用 count(case whe
删除重复行 user_info: -- 单字段筛选重复行 SELECT *from user_info WHERE NAME in ( SELECT NAME from user_info GROUP BY NAME HAVING COUNT(NAME)>1); -- 删除重复行,保留id最小的数据SELECT *from user_info WHERE NAME in ( SELECT NAME from user_info GROUP BY NAME HAVING COUNT(NAME)>