mysql count(表达式)_MySQL 使用 COUNT函数根据条件记数

Mysql中COUNT()函数,一般是统计字段非空的记录数,所以可以利用这个特点来进行条件统计,注意为NULL值不会统计,但是false是会被统计。

基本使用

select COUNT(*) from test;

上面SQL统计当前查询所有行

select COUNT(number) from test;

上面SQL只会统计phone不为空的行

SELECT COUNT(DISTINCT number) FROM test;

以上SQL会去除相同的number记录

条件统计

COUNT()函数中条件表达式加 OR null

SELECT COUNT(number > 180 OR null) FROM test;

COUNT()函数中条件表达式使用 if

SELECT COUNT(if(number > 180, 1, null)) FROM test;

COUNT()函数中条件表达式使用 case when

SELECT COUNT(case when number > 180 then 1 end) FROM test;

注:上面三条SQL,结果相同,即其逻辑意义相同。

案例SQL

SET NAMES utf8mb4;

SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------

-- Table structure for test

-- ----------------------------

DROP TABLE IF EXISTS `test`;

CREATE TABLE `t

Mysql中COUNT()函数,一般是统计字段非空的记录数,所以可以利用这个特点来进行条件统计,注意为NULL值不会统计,但是false是会被统计。 基本使用 select COUNT(*) from test; 上面SQL统计当前查询所有行 select COUNT(number) from test; 上面SQL只会统计phone不为空的行 SELECT COUNT(DISTINCT number) FROM test; 以上SQL会去除相同的number记录 条件统计 COUNT()函数中条件表达式加 OR null SELECT COUNT(number > 180 OR null) FROM test; COUNT()函数中条件表达式使用 if SELECT COUNT(if(number > 180, 1, null)) FROM test; COUNT()函数中条件表达式使用 case when SELECT COUNT(case when number > 180 then 1 end) FROM test; 注:上面三条SQL,结果相同,即其逻辑意义相同。 案例SQL SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for test -- ---------------------------- DROP TABLE IF EXISTS `test`; CREATE TABLE `t
经验分享 程序员 微信小程序 职场和发展