SQLite使用group by进行折叠并忽略null

时间:2016-10-04 09:38:40

标签: sqlite group-by grouping coalesce

我得到了users

id |name |email
-------------------------
1  |sam  |null
-------------------------
2  |sammy|qqq@example.com 
-------------------------
3  |samy |sam@example.com 
-------------------------
4  |sammy|null 
-------------------------

我想合并所有行但保留第一行并从其他行替换所有空值。

对我来说,2个有效的结果是:

  • 1 |sam |qqq@example.com
  • 1 |sam |sam@example.com

我一直试图做那样的事情

select 1,id,name,coalesce(email) from users group by 1

但不允许coalesce以这种方式使用 如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

聚合函数忽略NULL值,因此可以使用MIN()或MAX():

SELECT 1,
       id,
       name,
       COALESCE(email, (SELECT min(email) FROM users))
FROM users
ORDER BY id
LIMIT 1;