2016-10-04 10 views
0

を無視し、私はすべての行をマージしますが、最初の行を維持し、他の行からすべてのNULL値を置き換えたいusersテーブルSQLiteの崩壊とヌル

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

あなたの質問によれば、どの名前もOKです。 –

+0

私は言葉で最高ではないので、いいです。しかし、私が示した2つの結果は、有効な2つだけです。名前を変更することはできません。私は最初の行をそのままにして、その中のすべてのヌル値を利用可能な他の値と置き換えます。しかし、それがヌルでないなら、私はそれを保ちたい。 –

関連する問題