MySQL GROUP CONCAT с нулями

есть ли возможность сделать функцию Group_Concat MySQL включающей нули?

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

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).

2 ответов


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

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

демо здесь.


вы должны использовать IFNULL или COALESCE на selectionId значение:

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