Сбой 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;