微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MySQL - 带有空字段的 MIN 和 MAX 值

如何解决MySQL - 带有空字段的 MIN 和 MAX 值

我正在尝试编写一个 sql,它允许我返回开始时间的最小值和结束时间的最大值。我的问题是在表中我可以有空行,当我在空字段上执行 MIN 时,它会返回一个空值。我不能做 begin_service! = '' 因为我可能没有值,在这种情况下我必须有一个空结果。这是我的桌子:

app_id function_id begin_service end_service
B125 12
B125 13
B125 54
C789 98
C789 12 06:00 18:00
C789 15 08:00 20:00
C789 78

我的 sql :

SELECT app_id,MIN(begin_service),MAX(end_service)
FROM applications
GROUP BY app_id;

结果:

app_id begin_service begin_service
B125
C789 20:00

想要的结果:

app_id begin_service begin_service
B125
C789 06:00 20:00

你能帮我吗?

解决方法

使用两个子查询获取每个 app_id 的空和非空最小值。将它们与 UNION 结合,然后取最大值以首选非空值。

SELECT app_id,MAX(begin_service) AS begin_service,MAX(end_service) AS end_service
FROM (
    SELECT app_id,MIN(begin_service) AS begin_service,MAX(end_service) AS end_service
    FROM applications
    WHERE begin_service != ''
    GROUP BY app_id

    UNION ALL

    SELECT app_id,'',MAX(end_service)
    FROM applications
    WHERE begin_service = ''
    GROUP BY app_id
) AS x
GROUP BY app_id

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。