在 GROUP BY 后获取第一个非空值的 MySQL 语句

在 GROUP BY 后获取第一个非空值的 MySQL 语句

在MySQL中,GROUP BY语句可以将结果集按照指定的列进行分组。如果其中有一列存在NULL值,那么在分组后会出现问题。这时需要获取每个分组的第一个非NULL值。我们可以通过以下方法来实现。

  1. 使用子查询和LIMIT
SELECT
  id, 
  (
    SELECT column
    FROM my_table t2
    WHERE t1.id = t2.id AND column IS NOT NULL
    ORDER BY t2.time ASC
    LIMIT 1
  ) AS first_value
FROM my_table t1
GROUP BY id;
Mysql
  1. 使用GROUP_CONCAT和SUBSTRING_INDEX
SELECT 
  id, 
  SUBSTRING_INDEX(GROUP_CONCAT(column ORDER BY time ASC SEPARATOR ';'), ';', 1) AS first_value
FROM my_table
WHERE column IS NOT NULL
GROUP BY id;
Mysql

阅读更多:MySQL 教程

总结

以上方法分别使用了子查询和字符串函数,可以根据实际情况选择使用。在使用GROUP BY分组时,要注意列存在NULL值的情况,可以使用函数解决问题。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册