当前位置: 首页 > 面试题库 >

MySQL Group By和跳过对空值的分组

楮景明
2023-03-14
问题内容
select * from dc_deal group by collection_id

在collection_id列中,我有 (1,3,3,4,4,5,NULL,NULL)值 。上面的查询将返回带有
(1,2,3,4,NULL)的 行,但是我想跳过对NULL值的分组,并且需要类似 (1,2,3,4,NULL,NULL)的结果


问题答案:

如果表中有一个唯一的列(或一组列),则可以在中添加另一个表达式GROUP BY

如果collection_id为null ,则表达式需要为每行返回一个唯一值。否则,它返回一个常数。

假设我们id在表中有一个唯一的列,那么我们可以做这样的事情:

... GROUP BY collection_id, IF(collection_id IS NULL, id, 0)

当不为null时,in中的第二个表达式GROUP BY返回一个常数。但是,当collection_id为null时,它将为每一行返回一个唯一值。0``collection_id

请注意,id这里只是对表中定义为唯一的列的引用。主键是不错的选择。如果我们在单个列上没有唯一索引,那么我们可以针对我们唯一约束中的每一列,或保证每一行唯一的任何表达式集重复相同类型的表达式。

... GROUP BY collection_id
           , IF(collection_id IS NULL, col1, '')
           , IF(collection_id IS NULL, col2, NULL)
           , IF(collection_id IS NULL, col3, collection_id)

或者,我们可以使用一个表达式生成一个唯一值:

... GROUP BY IFNULL(collection_id,UUID())


 类似资料:
  • DB_示例我正在探索数据库的自动化测试,并努力在表中找到空值。 我想测试: > 如果EID2= 有null值,我得到以下错误:不能调用String.startswith(String),因为java.util.Map.get(对象)的返回值为null。 我的第一个值总是空的,所以我从计数器1开始循环,这解决了这个问题,但是我的表中的EID和CID中都有空值。如果不满足条件(即值为null),测试失

  • 一直放这些空检查真的有意义吗?例如: 实际上,上面的代码段相当于语句 如果的值为null,则在这两种情况下都会引发异常(后者为NullpointerException)。 null

  • 本文向大家介绍区分MySQL中的空值(null)和空字符(''),包括了区分MySQL中的空值(null)和空字符('')的使用技巧和注意事项,需要的朋友参考一下 日常开发中,一般都会涉及到数据库增删改查,那么不可避免会遇到Mysql中的NULL和空字符。 空字符('')和空值(null)表面上看都是空,其实存在一些差异: 定义: 空值(NULL)的长度是NULL,不确定占用了多少存储空间,但是占

  • 问题 你想遍历一个可迭代对象,但是它开始的某些元素你并不感兴趣,想跳过它们。 解决方案 itertools 模块中有一些函数可以完成这个任务。 首先介绍的是 itertools.dropwhile() 函数。使用时,你给它传递一个函数对象和一个可迭代对象。 它会返回一个迭代器对象,丢弃原有序列中直到函数返回Flase之前的所有元素,然后返回后面所有元素。 为了演示,假定你在读取一个开始部分是几行注

  • 问题内容: 我正在尝试使用php驱动程序计算mongo db集合中给定记录的跳过值。因此,获取给定的记录,找出整个集合中该记录的索引。这可能吗? 目前,我正在选择所有记录,并手动对结果数组进行索引。 问题答案: 这称为“转发分页”,这是一个概念,当您使用“排序的”结果时,可以沿“转发”方向对结果进行“有效分页”。 包含JavaScript逻辑(因为它可以在Shell中使用),但翻译起来并不难。 一

  • 我遇到了Streams的或方法的问题,因为spliterator跳过特定模式(奇数或偶数)的文本部分。应该做什么来处理文本的所有部分?我在这里的方法: 示例输入为: 它将跳过Faysal:2和Faysal:4