35

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に解決されます)。

4

2 に答える 2

53

IFNULLできる列だけを指定する必要がありますNULL

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

ここでデモ。

于 2012-04-26T15:02:21.833 に答える
5

IFNULLまたは値を直接使用する必要COALESCEがあります。selectionId

SELECT
  userId,
  GROUP_CONCAT(CONCAT(questionId, '=', COALESCE(selectionId, 'NULL')))
FROM selection
GROUP BY userId;
于 2012-04-26T15:01:03.873 に答える