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

MySQL中NULL值的5个反直觉行为,扭到了吗?

核心原则:NULL和任何值比较(=、!=、>、<),结果都是NULL,不是TRUE也不是FALSE。

1、NULL = NULL 返回NULL
正确的NULL判断

-- ❌ 错误写法
SELECT * FROM user WHERE phone = NULL;
-- 0 rows(查不到任何数据)SELECT * FROM user WHERE phone != NULL;
-- 0 rows(也查不到任何数据)-- ✅ 正确写法
SELECT * FROM user WHERE phone IS NULL;
-- 查到phone为NULL的行 ✅SELECT * FROM user WHERE phone IS NOT NULL;
-- 查到phone不为NULL的行 ✅

2、COUNT(column)不统计NULL

INSERT INTO test_count VALUES 
(1, 'alice', '13800138000'),
(2, 'bob', NULL),
(3, 'charlie', NULL),
(4, 'david', '15000150000');-- 统计有手机号的用户数
SELECT COUNT(phone) FROM user;  -- 8(有8个用户填了手机号)-- 统计没有手机号的用户数
SELECT COUNT(*) - COUNT(phone) FROM user;  -- 2(有2个用户没填)-- 或者
SELECT COUNT(*) FROM user WHERE phone IS NULL;  -- 2

3、SUM/AVG也会忽略NULL
4、NOT IN遇到NULL全军覆没

WHERE user_id NOT IN (100, 200, NULL)

解决方案

  • 过滤掉NULL
SELECT * FROM user 
WHERE user_id NOT IN (SELECT blocked_user_id FROM blacklist WHERE blocked_user_id IS NOT NULL  -- 关键
);
  • 用NOT EXISTS(推荐)
SELECT * FROM user u
WHERE NOT EXISTS (SELECT 1 FROM blacklist b WHERE b.blocked_user_id = u.user_id
);-- NOT EXISTS不受NULL影响 ✅
  • 用LEFT JOIN
SELECT u.* 
FROM user u
LEFT JOIN blacklist b ON u.user_id = b.blocked_user_id
WHERE b.blocked_user_id IS NULL;
http://www.hskmm.com/?act=detail&tid=31607

相关文章:

  • 2025 年射线防护服生产厂家最新推荐排行榜:覆盖 X 射线 / 医用 / 中子射线防护服及防护裙、防护屏等品类,为医疗安检领域精选优质品牌
  • 2025 最新阳澄湖大闸蟹权威推荐排行榜,揭秘优质品牌的独特魅力大闸蟹蟹卡 / 大闸蟹礼盒 / 大闸蟹礼券 / 好蟹汇大闸蟹选择指南
  • 碳中和背景下的能源数字化:MyEMS 为企业提供精准碳管理方案
  • 在 VS Code 中集成 LaTeX 环境并创建第一个文档
  • 2025 年月子会所推荐:女王臻瑷专注母婴护理 10 年,西安口碑之选的高端母婴护理服务解析
  • Ai元人文:思想的归乡——从悟空之眼到未来哪吒
  • 国产测试用例管理工具市场格局解析:四大产品如何赋能企业数字化转型
  • 桌面预测类编写,桌面%雷达,信号预测%系统构建,基于python,tk,scikit-learn机器学习算法实现,桌面预支持向量机分类算法,CSV无数据库
  • C语言的学习——梦开始的地方
  • 学习 n8n 心得
  • 2025 年外呼系统公司推荐:重庆腾宇科技,外呼系统专业缔造者与行业服务典范
  • oop实验一
  • 池化
  • 在AI技术唾手可得的时代,挖掘直播工具新需求成为关键突破点
  • 多模态识别技术革新物品追踪流程
  • 2025 年震动盘厂家最新推荐排行榜:精密 / 电子 / 笔筒 / 塑料震动盘及定做服务优选企业榜单发布
  • java学习2小时教程-【小细节】
  • 2025年太阳能板购买全攻略:推荐、选择与性价比分析
  • UEFI安装Windows 7 64位
  • 2025 年展会搭建公司最新推荐排行榜:服务商创意定制与全流程服务能力深度解析
  • 本地虚拟机windows 安装mysql数据库版本可选,外部如何连接
  • 2025年常州服装培训学校培训学校推荐榜
  • MLGO微算法科技创新AI技术:基于DRL的设备边缘协同推理优化系统,助力无线智能感知进入“极致高效”时代
  • 2025 最新隔音棉生产厂家口碑推荐榜:甄选家装公装专用材质,涵盖西南及全国实力品牌昆明/下水管/阻尼片/专用隔音棉厂家推荐
  • C 语言 - 操作文件函数全解析
  • C 语言 - fopen、fprintf、fread、fwrite、fputc 操作文件函数解析
  • 找靠谱图像处理软件?Adobe PS2025 全球设计师都在用
  • 2025 碳晶板厂家最新推荐榜:含木纹 / 白色 / 全屋整装等品类,西南及全国优质厂家权威甄选指南
  • 2025年麻辣王子全面评测:口味、价格与购买全攻略
  • 把列表中所有姓周的人的信息删掉(此题有坑, 请慎重): lst = [周⽼⼆, 周星星, 麻花藤, 周扒⽪] # 结果: lst = [麻花藤]