Mysql GROUP BY 排除null数据

2023-05-16

最近在Mysql发现一个问题,当我们如果使用GROUP BY如果出现NULL值,MYSQL会怎样处理。而且如果我需要把每个NULL值都打印出来而不是分组,那该怎么办?

下面我们做个试验:

    CREATE TABLE IF NOT EXISTS A(id INT PRIMARY KEY AUTO_INCREMENT ,NAME VARCHAR(10)) ;  
    CREATE TABLE IF NOT EXISTS B(id INT PRIMARY KEY AUTO_INCREMENT ,NAME VARCHAR(10) ,aid INT NOT NULL) ;  
      
    INSERT INTO A(NAME) VALUES('a') ;  
    INSERT INTO A(NAME) VALUES('a') ;  
    INSERT INTO A(NAME) VALUES('a') ;  
    INSERT INTO A(NAME) VALUES('a') ;  
    INSERT INTO A(NAME) VALUES('b') ;  
    INSERT INTO A(NAME) VALUES('b') ;  
    INSERT INTO A(NAME) VALUES('a') ;  
    INSERT INTO A(NAME) VALUES('a') ;  
    INSERT INTO A(NAME) VALUES('b') ;  
    INSERT INTO A(NAME) VALUES('a') ;  
    INSERT INTO A(NAME) VALUES('b') ;  
    INSERT INTO A(NAME) VALUES('a') ;  
      
    INSERT INTO B(NAME ,aid) VALUES('d' , 3) ;  
    INSERT INTO B(NAME ,aid) VALUES('f' , 5) ;  
    INSERT INTO B(NAME ,aid) VALUES('f' , 6) ;  
    INSERT INTO B(NAME ,aid) VALUES('f' , 7) ;  
    INSERT INTO B(NAME ,aid) VALUES('d' , 8) ;  

结果:
在这里插入图片描述在这里插入图片描述

我们用GROUP BY 在A表查询,以name作为分组,比如:

SELECT a.name FROM A GROUP BY a.name ;

结果:
在这里插入图片描述

然后我们使用连接查询:

    SELECT a.id ,a.name ,b.name FROM A a   
    LEFT JOIN B b  
    ON(a.id = b.aid) ;  

结果:
在这里插入图片描述

但我们现在需要用GROUP对上面的进行查询:

    SELECT a.id ,a.name ,b.name FROM A a   
    LEFT JOIN B b  
    ON(a.id = b.aid) GROUP BY b.name;  

结果
在这里插入图片描述
从上面可以看出,当group by这列有null值时,group会把他们当成是同一个直接聚合。

但我现在需要把b.name=NULL的情况都查询出来,而不是聚合,那么怎么办?

后来在网上:http://stackoverflow.com/questions/4588935/group-by-do-not-group-null找到了方法。

我们可以使用一个UUID来对null值进行转换,这样每个b.name=null的行都会被查询出来而不是被分到同一组。

对于UUID我们可以查询MYSQL的技术文档http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid

下面来尝试下:

#--增加一个UUID(),把b.name的NULL的值都转化为具有专一性的uuid,这样每个b.name都会不同,GROUP就不会对他们进行分组  
    SELECT a.id ,a.name ,b.name FROM A a   
    LEFT JOIN B b  
    ON(a.id = b.aid)   
    GROUP BY IFNULL(b.name,UUID());  

运行结果:

在这里插入图片描述

这样可以实现Mysql Group by NULL值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql GROUP BY 排除null数据 的相关文章

  • 如何在不超时的情况下解析大型 CSV 文件?

    我正在尝试解析 50 MB 的 csv 文件 文件本身很好 但我正在尝试解决所涉及的大量超时问题 每个设置上传明智 我可以轻松上传并重新打开文件 但浏览器超时后 我收到 500 内部错误 我的猜测是我可以将文件保存到服务器上 打开它并保留我
  • SQL统计高于和低于平均分的学生人数

    我在下面有一个示例表 我试图获取高于平均分数的学生人数和低于平均分数的学生人数 name subject classroom classarm session first term score first term grade std1 m
  • SQL 检查一组日期是否在指定的日期范围内

    我有一个表 其中保存架构中房间不可用的日期 ROOM ID DATE UNAVAILABLE 我需要一个 sql 查询来检查两个日期范围内是否有可用房间 类似于 Select All rooms that are constantly av
  • MySQL 按主键排序

    某些 SQL 服务器允许使用通用语句 例如ORDER BY PRIMARY KEY 我不相信这适用于 MySQL 是否有任何此类解决方法可以允许跨多个表自动选择 或者是否需要查找查询来确定主键 我一直在研究的解决方法包括调用SHOW COL
  • 使用唯一索引删除重复项

    我在两个表字段 A B C D 之间插入 相信我已经在 A B C D 上创建了唯一索引以防止重复 然而我以某种方式简单地对这些做了一个正常的索引 因此插入了重复项 这是2000万条记录的表 如果我将现有索引从普通索引更改为唯一索引 或者只
  • mysql语句中的*星号是什么意思?

    Ex mysql query SELECT FROM members WHERE id id 这意味着选择表中的所有列
  • MySQL 服务器未启动

    当我做 mysql u root p并输入my password这就是我得到的 错误 2002 HY000 无法通过套接字 var run mysqld mysqld sock 连接到本地 MySQL 服务器 2 所以我输入 systemc
  • MySQL 全文搜索不适用于某些单词,例如“house”

    我已经在 3 个字段中的一小部分记录上设置了全文索引 也尝试了 3 个字段的组合 并得到了相同的结果 有些单词返回结果很好 但某些单词如 house 和 澳大利亚 不这样做 有趣的是 澳大利亚 和 家乡 这样做 这似乎是奇怪的行为 如果我添
  • 如何将 MySQL 数据库更改为 UTC?

    我使用的是 Windows 7 对数据库方面的东西有点陌生 我尝试在 Google 上搜索如何将系统时区更改为 UTC 但文档有些高级 我不太确定如何更改此字段 在 my ini 文件的 mysqld 部分下 添加以下行 default t
  • 单行的总和值?

    我有一个 MySQL 查询 它返回由一系列 1 和 0 组成的单行 它用于进度条指示器 我现在在代码中对它进行求和 但我尝试对查询中的值求和 并意识到我无法使用 SUM 因为它们有很多列 但只有一行 有没有办法可以在查询中自动求和 就像这样
  • 为什么 MySQL 创建带有 _seq 后缀的表?

    我创建了一个 InnoDB 表 名为foo在 MySQL 中 一旦我对表执行插入操作 我就会看到另一个表foo seq被建造 如果我删除自动生成的表 它会在下一次插入后出现 是什么原因造成的 听起来像是正在创建一个序列 您是否有自动生成的主
  • 查询中列的顺序重要吗?

    当从 MySQL 表中选择列时 与表中的顺序相比 选择列的顺序是否会影响性能 不考虑可能覆盖列的索引 例如 您有一个包含行 uid name bday 的表 并且有以下查询 SELECT uid name bday FROM table M
  • 如何在 Laravel 查询中使用多个 OR,AND 条件

    我需要 Laravel 查询帮助 我的自定义查询 返回正确结果 Select FROM events WHERE status 0 AND type public or type private 如何写这个查询Laravel Event w
  • 通过 __get() 通过引用返回 null

    快速规格 PHP 5 3 error reporting 1 the highest 我正在使用 get 通过引用技巧神奇地访问对象中任意深度的数组元素 快速示例 public function get key return isset t
  • 截断 Mysql 表 Cron 作业?

    我在如何使用 cron 作业截断 Mysql 表时遇到了一些麻烦 无论我尝试什么 我似乎都无法让数据库清除表格 感谢您的帮助 mysql uderp example pexample hlocalhost Dexample e TRUNCA
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • 第三个下拉菜单不从数据库填充

    我有以下 Index php
  • InnoDB 因读未提交而死锁! - Java - Glassfish - EJB3(JPA/Hibernate)

    几天来 我在使用 Glassfish EJB3 和 Mysql InnoDB 的 Java 应用程序上遇到了死锁问题 配置 Mysql InnoDB Ver 14 12 Distrib 5 0 51a 适用于 debian linux gn
  • Mysql 中 UNION 子句的替代方案

    我有两张桌子 表 a 表 b table a ID 1 2 3 4 5 7 table b ID 2 3 4 5 6 我必须得到这样的输出而无需UNION命令 ID 1 2 3 4 5 6 7 注意 我有一个联合解决方案 select fr
  • MySQL MIN/MAX 所有行

    我有桌子Races与行ID Name and TotalCP 我选择分钟 TotalCP FROM Races 但是我想选择具有最小值的整行 我如何在单个查询中做到这一点 从聚合值获取整行的一般形式是 SELECT FROM Races W

随机推荐

  • Docaker部署Nginx配置多个域名

    1 拉取nginx镜像 sudo docker pull nginx 2 映射端口指定配置文件和前端目录 sudo docker run d p 9524 9524 p 9525 9525 p 10080 10080 restart alw
  • 硬件消抖——开关并联电容的那点事儿

    硬件消抖 开关并电容的那点事儿 一年前做过的小脚丫的消抖实验和不消抖实验的区别 xff0c 开关如果不消抖 xff0c 产生的毛刺和电平变化确实给开关带来了不良影响 xff0c 比如按键不灵 xff0c 需要按暂停或者切换的时候要反复按多次
  • 微信电脑版登录不了了,怎么办?不显示二维码

    今天微信开发者工具不显示二维码 xff0c 很尬 xff0c 找了好了方法 xff0c 最满意的一个如下 xff0c 如果解决了 xff0c 记得给我点赞 电脑上无法登录微信的解决方法 xff1a 1 先退出电脑微信登录页面 2 按Win
  • eclipse集成git关联到gitee同步代码

    eclipse集成git关联到gitee同步代码 1 注册gitee2 eclipse集成git3 eclipse配置git4 gitee配置用户ssh公钥5 本地新建项目提交到本地git仓库6 本地git仓库提交到远程gitee仓库7 修
  • JavaEE互联网轻量级框架整合开发-1入门和技术基础-JDK代理

    JDK代理 1 定义接口 public interface HelloYuan public void sayHelloYuan 2 实现接口 public class HelloYuanImpl implements HelloYuan
  • 阿里巴巴代码规范4点

    阿里巴巴代码规范 一 安全规约 前端 后端接口进行权限和角色校验展示敏感数据时需脱敏 xff08 用户个人手机号码 xff1a 137 3927 xff09 SQL注入问题 xff08 字符串拼接访问数据库 xff09 xff0c 表示先编
  • Cannot read property ‘appendChild‘ of null错误

    记前端Js报错 xff0c Cannot read property appendChild of null 页面由上至下执行 xff0c 提示获取不到插入的节点 将js代码放到body中的最后面
  • The new driver class is `com.mysql.cj.jdbc.Driver‘.

    记一次数据库连接数据库报错 报错提示 xff1a Loading class com mysql jdbc Driver 39 This is deprecated The new driver class iscom mysql cj j
  • Consider defining a bean of type ‘com.project.springboot.mapper.UserMapper‘ in your configuration.

    新建springboot项目启动时出现报错 xff1a Consider defining a bean of type com project springboot mapper UserMapper in your configurat
  • 面试官:如何优化sql

    在面试的环节中 xff0c 面试官问到 xff1a 你是如何设计你的表结构的 xff0c 画一下E R图 xff1f 接着又继续深挖 xff0c 如果有慢查询 xff0c 你是如何优化你的sql的 xff1f 今天 xff0c 我就来和大家
  • PageNotFound.noHandlerFound No mapping found for HTTP request with URI

    学习SpringMVC接收参数 xff0c 不小心配置xml文件包名出错 浏览器访问出现以下报错 xff0c 后端提示 xff1a org span class token punctuation span springframework
  • The driver has not received any packets from the server

    idea启动本地项目提示报错 The driver has not received any packets from the server xff0c 可能是数据库Mysql服务被停止 解决办法 xff1a 1 打开计算机的任务管理器 2
  • [Vue-Treeselect Warning] Detected duplicate presence of node id

    只能说出现这个问题的小伙伴们 xff0c 和曾经的我一样 xff0c 给自己挖了一个巨坑 问题点 xff1a 不影响任何业务需求或者操作 xff0c 但是在控制台出现了以上截图报错 xff08 找到问题的我不顾上班时间 xff0c 愤怒写下
  • vmware-horizon-client安装失败无反应

    公司周日下午5点说开始远程办公 xff0c 让我们装上vmware horizon client开始居家办公啦 xff0c 但是捏 xff0c 我昨天光是安装就傻了 xff0c 整一晚上 xff0c 点击安装软件exe xff08 下面截图
  • springboot搭建web项目

    记录在本地搭建的springboot web项目 1 file gt New gt Project 2 选择Spring Initializr gt next 3 选择对应构建 开发语言 打包方式 JDK版本等内容 4 选择需要添加的依赖
  • SyntaxError: Unexpected token ‘.‘

    开发时vscode弹出插件更新 手一抖安装了插件vue Language Featues xff08 Volar xff09 本来正常运行的代码报错 xff1a SyntaxError Unexpected token span class
  • java项目调用SAP函数报错

    公司内部新增一个java项目调用SAP系统中的函数 调试时出现如下问题 xff08 xff09 问题一 xff1a com sap conn jco JCoException span class token punctuation spa
  • 计算机概论

    最近要学习Linux系统 xff0c 所以顺道将计算机的前世今生也学习了 xff0c 下面做个读书笔记增强记忆 一 计算机的组成 1 计算机硬件的五大单元 从外观看来 xff0c 计算机主要分为三部分 xff1a 输入单元 xff1a 包括
  • Ubuntu18.04安装QT5.14.2

    Ubuntu18 04安装QT5 14 2以及QT导入项目问题和解决办法 1 官网下载安装包2 官网注册账号3 安装4 解决bug5 QT导入项目6 其他Ubuntu18 04安装github desktop 7 QTimer不能同时使用两
  • Mysql GROUP BY 排除null数据

    最近在Mysql发现一个问题 xff0c 当我们如果使用GROUP BY如果出现NULL值 xff0c MYSQL会怎样处理 而且如果我需要把每个NULL值都打印出来而不是分组 xff0c 那该怎么办 xff1f 下面我们做个试验 xff1