Сбой SQLite с использованием group by и игнорирование null

Я получил 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 не разрешается использовать таким образом.
Как решить эту проблему?

1 ответ

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

SELECT 1,
       id,
       name,
       COALESCE(email, (SELECT min(email) FROM users))
FROM users
ORDER BY id
LIMIT 1;
Другие вопросы по тегам