目录
CREATE TABLE `test_task` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`done` tinyint(1) DEFAULT NULL COMMENT '是否完成',
`doneTime` int(11) DEFAULT NULL COMMENT '完成时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
需求:统计总数,未完成数和完成数
方法一:
select count(*),done from test_task group by done
结果:
嗯 完成5 未完成6 合为5+6 如果还有待完成状态呢 合!=5+6 然后又得码if else
方法二:
SELECT
count( #计数
CASE
WHEN done > 0 THEN #大于0为完成 返回1 否则返回null
1 ELSE NULL #null的时候count不会统计
END
) AS doneNum,
count(
CASE
WHEN done = 0 THEN
1 ELSE NULL
END
) AS notDoneNum,
count( * ) AS allNum
FROM
test_task
结果:
一行数据 而且不用group的排序 效率会更高
一维数组直接返回给client处理就好
总结:
常用的mysql函数和流程判断还是需要掌握一下,会经常用到的