我得到了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
以这种方式使用
如何解决这个问题?
答案 0 :(得分:0)
聚合函数忽略NULL值,因此可以使用MIN()或MAX():
SELECT 1,
id,
name,
COALESCE(email, (SELECT min(email) FROM users))
FROM users
ORDER BY id
LIMIT 1;