Existe-t-il une option pour que la fonction Group_Concat de MySQL inclue des valeurs nulles?
Prenons l'exemple suivant de ma table source:
userId, questionId, selectionId
7, 3, NULL
7, 4, 1
7, 5, 2
Lorsque j'interroge sur la table de sélection avec GROUP_CONCAT, j'obtiens ce qui suit:
7, 4=1,5=2
Je souhaite obtenir ce qui suit:
7, 3=NULL,4=1,5=2
Pour référence, ma requête ressemble à ceci:
Select userId, GROUP_CONCAT(CONCAT(questionId, '=', selectionId))
From selection
Group by userId;
J'ai également essayé d'ajouter un IFNULL comme ceci:
Select userId, GROUP_CONCAT(IFNULL(CONCAT(questionId, '=', selectionId), 'NULL'))
From selection
Group by userId;
mais cela a produit ce qui suit:
7, NULL,4=1,5=2
Remarque - Il y a une autre complexité que j'ai oublié d'inclure. Le selectionId est une clé étrangère vers une autre table. J'utilise une jointure externe gauche à la table selection_text. Ma vraie requête inclut des champs de cette table (ces champs se résolvent à NULL puisque le selectionId est nul).
Vous devriez juste IFNULL
la colonne qui peut être NULL
;
SELECT userId, GROUP_CONCAT(CONCAT(questionId, '=',
IFNULL(selectionId, 'NULL')))
FROM selection
GROUP BY userId;
Démo ici .
Vous devez utiliser IFNULL
ou COALESCE
directement sur la valeur selectionId
:
SELECT
userId,
GROUP_CONCAT(CONCAT(questionId, '=', COALESCE(selectionId, 'NULL')))
FROM selection
GROUP BY userId;