mysql count 为null时,显示0的问题

目录
  • mysql count 为null时,显示0
    • 1.使用ifnull
    • 2.运行结果
  • mysql让count为0的记录也显示出来
    • 在mysql 下执行如下命令

mysql count 为null时,显示0

1.使用ifnull

ifnull(字段名,目标值)

SELECT a.*,IFNULL(r.count,0) from (SELECT act_id,poster_id,type,style_type,status,status_time,title,content,images,start_time,end_time,district_id,address,lon_map,lat_map,person_num,person_name,person_phone,person_wx_id,reward_min,reward_max,cost_type,meal_svc,taxi_svc,hair_length,hair_handle,remark,is_over,create_time,note
FROM activity WHERE poster_id = 3055808629673784641 ORDER BY create_time DESC limit 0,20) a LEFT JOIN (SELECT count(1) count,act_id
                            FROM activity_user u
                            where  u.user_status in ('YBM', 'YTG', 'YQR')
                            GROUP BY u.act_id) r on a.act_id = r.act_id

2.运行结果

mysql让count为0的记录也显示出来

在mysql 下执行如下命令

select use_city,count(*) from data where os="Windows 2003 Std" group by use_city;

得到的结果为:

+-----------+----------+
| use_city | count(*) |
+-----------+----------+
| Beijing | 2 |
| Chengdu | 2 |
| Chongqing | 1 |
| Dalian | 2 |
| Fuzhou | 2 |
| Guangzhou | 2 |
| Hangzhou | 2 |
| Nanjing | 2 |
| Shanghai | 21 |
| Shenyang | 5 |
| Wuhan | 1 |
+-----------+----------+
11 rows in set (0.01 sec)

共有11条记录,问题是其中有一个城市“Tianjing”是没有记录符合的,怎么让他显示成

+-----------+----------+
| use_city | count(*) |
+-----------+----------+
| Beijing | 2 |
| Chengdu | 2 |
| Chongqing | 1 |
| Dalian | 2 |
| Fuzhou | 2 |
| Guangzhou | 2 |
| Hangzhou | 2 |
| Nanjing | 2 |
| Shanghai | 21 |
| Tianjing | 0 |
| Shenyang | 5 |
| Wuhan | 1 |
+-----------+----------+

让它count为0的记录也显示出来,做法如下:

SELECT
use_city,
COUNT(CASE WHEN os='Windows 2003 Std' THEN 1 ELSE NULL END)
FROM
data
GROUP BY
use_city

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • MySQL中设置NULL和空白字符串的问题及解决

    目录 MySQL设置NULL和空白字符串问题 在MySQL中判断是否为NULL MySQL中空值(null)和空字符(‘‘) 长度和判空 ifnull 建议 MySQL设置NULL和空白字符串问题 今天在修改一个bug,发现了很多问题. 记录其中一个比较有意识的bug. 数据库使用的是MySQL 先不谈问题,我就是觉得同一个字段,有人存了设置为空白字符串,有人设置了NULL. 空值是不占用空间的,MySQL中的NULL其实是占用空间的. 还有啊,有时候你虽然插入了NULL,但在数据库中还是有值的

  • 解读mysql中的null问题

    目录 mysql的null问题 SQL中的NULL你真的懂了吗? 查询某列值为 NULL 的数据 NULL 是「未知」 三元逻辑(原文为 Ternary Logic) NOT IN 和 NULL mysql的null问题 (1) 使用统计函数的时候会出现null值得情况 注意点 sum avg max min 都有可能出现为null的问题 而且 sum avg max min count(具体字段) 都会忽略null的数据 count(*) 不会忽略null数据 (2) 使用count统计需要注

  • MySQL ifnull()函数的具体使用

    MySQL IFNULL函数简介 MySQL IFNULL函数是MySQL控制流函数之一,它接受两个参数,如果不是NULL,则返回第一个参数. 否则,IFNULL函数返回第二个参数.两个参数可以是文字值或表达式. 以下说明了IFNULL函数的语法: IFNULL(expression_1,expression_2); 如果expression_1不为NULL,则IFNULL函数返回expression_1; 否则返回expression_2的结果. IFNULL函数根据使用的上下文返回字符串或数

  • mysql实现批量修改字段null值改为空字符串

    目录 批量修改字段null值改为空字符串 将某个字段修改为null(从不允许为空not null修改为null) 批量修改字段null值改为空字符串 UPDATE 表名 SET 字段名 = ( CASE WHEN IFNULL(字段名, '') = '' THEN '' ELSE 字段名 END ) WHERE 字段名 IS NULL; 将某个字段修改为null(从不允许为空not null修改为null) 以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们.

  • 详解MySQL的字段默认null对唯一索引的影响

    目录 正文 看一下为何唯一索引为影响insert速度 MySQL版本:在docker中启动一个mysql 假设只存在邮箱注册: insert数据 经验 正文 在日常业务开发中,会经常遇到需要保证唯一性的数据业务,如用户注册业务.一般注册业务中允许用户以手机号或email注册账号,且需要保证唯一,不允许重复注册.当用户输入手机号或email登录时,程序会判定输入信息的存在与否性,存在则走登录,不存在则走注册.而保证唯一性就不仅仅需要在程序端做判断,还需要MySQL的唯一索引去做最后一道防线.那么唯

  • MySQL如何判断字符串为NULL或者为空字符串

    目录 判断字符串为NULL或者为空字符串 MySQL中NULL和空字符串区别 一般会有以下疑问 注意事项 判断字符串为NULL或者为空字符串 函数名 说明 ISNULL(expr) 如果expr为null返回值1,否则返回值为0 IFNULL(expr1,expr2) 如果expr1值为null返回expr2的值,否则返回expr1的值 NULLIF(expr1,expr2) 如果expr1==expr2返回值为null,否则返回expr1的值:相当于case when expr1=expr2

  • mysql count 为null时,显示0的问题

    目录 mysql count 为null时,显示0 1.使用ifnull 2.运行结果 mysql让count为0的记录也显示出来 在mysql 下执行如下命令 mysql count 为null时,显示0 1.使用ifnull ifnull(字段名,目标值) SELECT a.*,IFNULL(r.count,0) from (SELECT act_id,poster_id,type,style_type,status,status_time,title,content,images,star

  • 小心陷阱!MySQL中处理Null时需注意两点

    MySQL数据库是一个基于结构化数据的开源数据库.SQL语句是MySQL数据库中核心语言.不过在MySQL数据库中执行SQL语句,需要小心两个陷阱. 陷阱一:空值不一定为空 空值是一个比较特殊的字段.在MySQL数据库中,在不同的情形下,空值往往代表不同的含义.这是MySQL数据库的一种特性.如在普通的字段中(字符型的数据),空值就是表示空值.但是如果将一个空值的数据插入到TimesTamp类型的字段中,空值就不一定为空.此时为出现什么情况呢(如下图)? 我先创建了一个表.在这个表中有两个字段:

  • mysql 中存在null和空时创建唯一索引的方法

    好多情况下数据库默认值都有null,但是经过程序处理很多时候会出现,数据库值为空而不是null的情况.此时创建唯一索引时要注意了,此时数据库会把空作为多个重复值,而创建索引失败,示例如下: 步骤1: mysql> select phone ,count(1) from User group by phone; +-----------------+----------+ | phone | count(1) | +-----------------+----------+ | NULL | 70

  • MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因

    目录 问题描述 原理简析 问题分析 拓展一下 总结一下 问题描述 用户在主库上执行了一个 alter 操作,持续约一小时.操作完成之后,从库发现存在同步延迟,但是监控图表中的 Seconds_Behind_Master 指标显示为 0,且 binlog 的延迟距离在不断上升. 原理简析 既然是分析延迟时间,那么自然先从延迟的计算方式开始入手.为了方便起见,此处引用官方版本 5.7.31 的源代码进行阅读.找到计算延迟时间的代码: ./sql/rpl_slave.cc bool show_slav

  • mysql count详解及函数实例代码

    mysql count详解 count函数是用来统计表中或数组中记录的一个函数,下面我来介绍在mysql中count函数用法. count(*) 它返回检索行的数目, 不论其是否包含 NULL值. SELECT 从一个表中检索,而不检索其它的列,并且没有 WHERE子句时, COUNT(*)被优化到最快的返回速度. 例如: mysql> SELECT COUNT(*) FROM student; COUNT(DISTINCT 字段)这个优化仅适用于 MyISAM表, 原因是这些表类型会储存一个函

  • MySQL COUNT函数的使用与优化

    COUNT 函数做什么用? COUNT 是一个专用的函数,通常有两种不同的方式:计算值和数据行.值指的是非空(Non-NULL)表达式(NULL表示值缺失).如果我们在 COUNT的参数中指定了列名或其他表达式,则 COUNT 函数是计算该表达式拥有值的次数.这让很多人困惑,相当一部分的原因是值和 NULL 的概念是模糊的. 另一种 COUNT 的形式是简单地计算结果集的数据行数.这是在 MySQL 知道 COUNT 函数参数的表达式不可能为 NULL 时的计算方式.最为典型的例子是 COUNT

  • 一文带你探究MySQL中的NULL

    目录 前言 1 MySQL 中的NULL 2 NULL占用的长度 3 对NULL值的比较 4 SQL对NULL值进行处理 5 值为NULL 对查询条件的影响 6 值为NULL对索引的影响 7 值为NULL对排序的影响 8 NULL和空值区别 总结 前言 不知道大家有没有遇到这样的问题,当我们在对MySQL数据库进行查询操作时,条件写的是status!=1,理论上会将所有不符合条件的查询出来,但奇怪的是结果为NULL的就查不出来,必须得拼接上条件or status IS NULL.本篇文章我们就一

  • MySQL count(1)、count(*)、count(字段)的区别

    目录 1.初识COUNT 2.COUNT(字段).COUNT(常量)和COUNT(*)之间的区别 3.COUNT(*)的优化 MyISAM InnoDB 4.COUNT(*)和COUNT(1) 5.COUNT(字段) 6.总结 关于数据库中行数统计,无论是MySQL还是Oracle,都有一个函数可以使用,那就是COUNT. 但是,就是这个常用的COUNT函数,却暗藏着很多玄机,尤其是在面试的时候,一不小心就会被虐.不信的话请尝试回答下以下问题: > 1.COUNT有几种用法? > 2.COUN

  • MySQL COUNT(*)性能原理详解

    目录 前言 1.COUNT(1).COUNT(*)与COUNT(字段)哪个更快? 实验分析 实验结果 实验结论 2.COUNT(*)与TABLES_ROWS 3.COUNT(*)是怎么样执行的? 4.总结 前言 在实际开发过程中,统计一个表的数据量是经常遇到的需求,用来统计数据库表的行数都会使用COUNT(*),COUNT(1)或者COUNT(字段),但是表中的记录越来越多,使用COUNT(*)也会变得越来越慢,今天我们就来分析一下COUNT(*)的性能到底如何. 1.COUNT(1).COUN

随机推荐