2016-10-04 53 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

好吧,所以我不是最好的話。但是,我顯示這是唯一有效的兩個結果。更改名稱不是一個選項。我希望第一行能夠保持原樣,並將其中的所有空值替換爲任何可用的其他值。但如果它不爲空,我想保留它。 –