2016-10-04 6 views
0

я получил 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 

Но coalesce не допускается для использования таким образом.
Как решить эту проблему?

ответ

0

Aggregation функции игнорируют пустые значения, так что вы можете использовать MIN() или MAX():

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

это исправить нулевой, но он может испортить первую строку. max по имени может привести к неправильному –

+0

В вашем вопросе говорится, что любое из имен в порядке. –

+0

ОК, поэтому я не лучший со словами. Но два результата, которые я показываю, являются единственными, которые действительны. Изменение имени не является вариантом. Я хочу, чтобы первая строка была такой, какая есть, и замените все нулевые значения в ней ЛЮБОЙ из других доступных значений. Но если это не так, я хочу сохранить его. –

 Смежные вопросы

  • Нет связанных вопросов^_^