当前位置: 首页 > news >正文

MySQL 值为Null会导致的问题

MySQL 值为Null会导致的问题

  • 数据准备
select version();
-- 8.0.30

-- 如果存在 person 表先删除
DROP TABLE IF EXISTS person; 

-- 创建 person 表,其中 username 字段可为空,并为其设置普通索引
CREATE TABLE person (
	id INT PRIMARY KEY auto_increment,
	name VARCHAR(20),
	mobile VARCHAR(13),
	index(name)
) ENGINE='innodb';

-- person 表添加测试数据
insert into person(name,mobile) values('Java','13333333330'),
	('MySQL','13333333331'),
	('Redis','13333333332'),
	('Kafka','13333333333'),
	('Spring','13333333334'),
	('MyBatis','13333333335'),
	('RabbitMQ','13333333336'),
	('Golang','13333333337'),
	(NULL,'13333333338'),
	(NULL,'13333333339');
  
select * from person;

count / distinct数据丢失

select count(*),count(name) from person;

-- count(*) count(name)
-- 10       8

select count(distinct name,mobile) from person;
-- 8
-- 当使用count(distinct col1,col2),如果任何一直字段的值为NULL,即使另外一列有值,查询结果也会被忽略

select 数据丢失

如果某列存在 NULL 值时,如果执行非等于查询(<>/!=)会导致为 NULL 值的结果丢失。

select * from person where name<>'Java' order by id;
-- 或
select * from person where name!='Java' order by id;

导致空指针异常

在使用聚会函数,SUM,AVG等,如何值为NULL,查询结果也是NULL,不会是预期值0.

解决方案是 SUM(ifnull(salary, 0))

group by , order by 会统计NULL值

select * from person order by name;

select name from person GROUP by name;

相关文章:

  • 【docker简化部署有状态prometheus+grafana】
  • Linux基础之基础概念
  • Java字符串(算法题相关)
  • 【第23节】C++设计模式(行为模式)-Interpreter(解释器)模式
  • 【面试】Java 集合
  • 使用格式工厂提取视频中的音频
  • 中国AI新星Manus:通用Agent的破晓时刻
  • 《OkHttp:工作原理 拦截器链深度解析》
  • 达梦数据库、图形管理工具安装和 JDBC 使用
  • 【强化学习笔记2】奖励稀疏的应对方式以及逆强化学习
  • 網站為何要注意负载均衡的應用
  • 可视化大屏:解锁数据奥秘,驱动智慧决策
  • scala 中的@BeanProperty
  • LabVIEW闭环控制系统硬件选型与实时性能
  • 全面回顾复习——C++语法篇1(基于牛客网C++题库)
  • XSS-LABS靶场通关讲解
  • 读书会-c#并发编程
  • P9421 [蓝桥杯 2023 国 B] 班级活动--数学题(配对问题)
  • FakeApp 技术浅析(三):自动编码器
  • ArcGIS 工程文件到 ArcGIS Pro 的无缝迁移:详细步骤与技巧
  • 长江画派创始人之一、美术家鲁慕迅逝世,享年98岁
  • 复旦发文缅怀文科杰出教授裘锡圭:曾提出治学需具备三种精神
  • 两部门发布外汇领域行刑反向衔接案例,织密金融安全“防护网”
  • 中国驻美国大使馆发言人就中美经贸高层会谈答记者问
  • 男子煎服15克山豆根中毒送医,医生:不能盲目相信偏方
  • AMD:预计美国芯片出口管制将对全年营收造成15亿美元损失