powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / сгруппировать кроме null значений
10 сообщений из 10, страница 1 из 1
сгруппировать кроме null значений
    #39524979
ambasador
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую участников форума!
Не могу понять логику следующего запроса. Имеем таблицу:

id | value
1 | 2
2 | 3
3 | 2
4 | NULL
5 | NULL
6 | NULL

Нужно получить такие данные на выходе:

id | value
1 | 2
2 | 3
4 | NULL
5 | NULL
6 | NULL

Короче сгруппировать строки в которых поле value не null.
Везде(в частности на stackoverflow.com) рекомендуют в конце запроса - group by ifnull(value, id). Потом еще через незнакомый мне ранее оператор - group by coalesce(value, id), но суть та-же.
В результате запрос группирует по value, но строки с null значениями исчезают.
Даже пробовал - group by if(isnull(value), id, value), результат такой-же.
...
Рейтинг: 0 / 0
сгруппировать кроме null значений
    #39525027
ambasador
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если быть точнее то вот еще пример:
Запрос:
Код: sql
1.
select * from test;



Вывод:
"id" "album_id" "album_name"
"1" "22" "test1"
"2" "4" "test2"
"3" "22" "test3"
"9" NULL "test4"
"10" NULL "test5"

Запрос:
Код: sql
1.
2.
select id, album_id, album_name, if(isnull(album_id), 0, count(*)) as cnt from test
group by ifnull(album_id, id);



"id" "album_id" "album_name" "cnt"
"2" "4" "test2" "1"
"9" NULL "test4" "0"
"10" NULL "test5" "0"
"1" "22" "test1" "2"

Как видно запрос вернул то что нужно, но мне нужно проделать тоже самое с таблицей результат которой многочисленных фильтров и джоинов, и структура этой таблицы аналогична тестовой, которая представлена в этом посте.
Не могу понять где ошибка
...
Рейтинг: 0 / 0
сгруппировать кроме null значений
    #39525064
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
GROUP BY COALESCE(album_id, RAND())album_id
...
Рейтинг: 0 / 0
сгруппировать кроме null значений
    #39525067
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и соответственно
Код: sql
1.
SUM(IF(ISNULL(album_id), 0, 1))
...
Рейтинг: 0 / 0
сгруппировать кроме null значений
    #39525206
ambasador
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaGROUP BY COALESCE(album_id, RAND())album_id

Может вы имели ввиду вот это:
Код: sql
1.
GROUP BY COALESCE(album_id, id), album_id


Потому что этот запрос правильно выбирает и в тестовой таблице и в целевой, благодарю за наводку!
...
Рейтинг: 0 / 0
сгруппировать кроме null значений
    #39525323
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ambasadorМожет вы имели ввиду вот это
Я имел в виду строго то, что написАл. Не надо пытаться договаривать за меня - всё равно не получится.
ambasadorэтот запрос правильно выбирает и в тестовой таблице и в целевой
В твоём частном случае - оно работает, потому что ID уникален. Но если в таблице нет уникального поля (или оно имеет неудобный тип), то такой подход приведёт к косякам, а то и проблемам.
...
Рейтинг: 0 / 0
сгруппировать кроме null значений
    #39525377
ambasador
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaЯ имел в виду строго то, что написАл.
Прям таки строго? Если это строго
Код: sql
1.
GROUP BY COALESCE(album_id, RAND())album_id


То тогда это Syntax Error. Вот поэтому я уточняю, а может вы RAND() вместо id по ошибке ляпнули.
В следующий раз, просто будьте внимательны!
...
Рейтинг: 0 / 0
сгруппировать кроме null значений
    #39525448
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ambasadorтогда это Syntax Error.Я проверил код, прежде чем постить. Никакого Syntax Error, результат соответствует требуемому.
...
Рейтинг: 0 / 0
сгруппировать кроме null значений
    #39525553
ambasador
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akinaambasadorтогда это Syntax Error.Я проверил код, прежде чем постить. Никакого Syntax Error, результат соответствует требуемому.
Да черт-побери, я про запятую после coalesce
...
Рейтинг: 0 / 0
сгруппировать кроме null значений
    #39525604
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ambasador , О! глаз-алмаз... да, уговорил, запятая там и вправду нужна.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / сгруппировать кроме null значений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]