gpt4 book ai didi

MySQL Group By 并跳过空值分组

转载 作者:可可西里 更新时间:2023-11-01 06:43:50 26 4
gpt4 key购买 nike

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)

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

请注意,此处的 id 只是对在表中定义为唯一的列的引用。 PRIMARY KEY 是一个很好的候选者。如果我们在单个列上没有唯一索引,那么我们可以为唯一约束中的每一列重复相同类型的表达式,或者为保证每一行唯一的任何表达式集重复相同类型的表达式。

... 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())

关于MySQL Group By 并跳过空值分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22369095/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com