Подтвердить что ты не робот

MySQL GROUP_CONCAT с нулями

Можно ли включить функцию MySQL Group_Concat в значение null?

Рассмотрим следующий пример из моей исходной таблицы:

userId, questionId, selectionId
7, 3, NULL
7, 4, 1
7, 5, 2

Когда я запрашиваю таблицу выбора с GROUP_CONCAT, я получаю следующее:

7, 4=1,5=2

Я хотел бы получить следующее:

7, 3=NULL,4=1,5=2

Для справки мой запрос выглядит так:

Select userId, GROUP_CONCAT(CONCAT(questionId, '=', selectionId))
From selection
Group by userId;

Я также попытался добавить IFNULL следующим образом:

Select userId, GROUP_CONCAT(IFNULL(CONCAT(questionId, '=', selectionId), 'NULL'))
From selection
Group by userId;

но это создало следующее:

7, NULL,4=1,5=2

Примечание. Есть еще одна сложность, которую я забыл включить. SelectionId является внешним ключом к другой таблице. Я использую левое внешнее соединение в таблице selection_text. Мой реальный запрос включает в себя поля из этой таблицы (эти поля разрешают NULL, так как selectionId имеет значение null).

4b9b3361

Ответ 1

Вы должны просто IFNULL столбца, который может быть NULL;

SELECT userId, GROUP_CONCAT(CONCAT(questionId, '=', 
                 IFNULL(selectionId, 'NULL')))
FROM selection
GROUP BY userId;

Демо здесь.

Ответ 2

Вы должны использовать IFNULL или COALESCE по значению selectionId напрямую:

SELECT
  userId,
  GROUP_CONCAT(CONCAT(questionId, '=', COALESCE(selectionId, 'NULL')))
FROM selection
GROUP BY userId;