2016-10-04 65 views
0

usersSQLite的崩溃使用GROUP BY和忽略空

id |name |email 
------------------------- 
1 |sam |null 
------------------------- 
2 |sammy|[email protected] 
------------------------- 
3 |samy |[email protected] 
------------------------- 
4 |sammy|null 
------------------------- 

我要合并所有的行,但保留第一行并从其他行全部更换为空值。

所以2个我来说有效的结果将是:

我一直在努力做类似的东西

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

但​​3210是不允许的以这种方式使用。
如何解决这个问题?

回答

0

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

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

就会好空,但它可以惹的第一行。最大名称可以带来错误 –

+0

你的问题说任何名字都可以。 –

+0

好吧,所以我不是最好的话。但是,我显示这是唯一有效的两个结果。更改名称不是一个选项。我希望第一行能够保持原样,并将其中的所有空值替换为任何可用的其他值。但如果它不为空,我想保留它。 –