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
注-含めるのを忘れたもう1つの複雑さがあります。 selectionIdは別のテーブルへの外部キーです。 selection_textテーブルに左外部結合を使用します。私の実際のクエリには、そのテーブルのフィールドが含まれています(これらのフィールドは、selectionIdがnullであるため、NULLに解決されます)。
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;