テーブルに一意の列(または列のセット)がある場合は、GROUP BY
に別の式を追加できます。 。
collection_id
の場合、式は各行に一意の値を返す必要があります 無効です。それ以外の場合は、定数を返します。
一意のid
があると仮定します テーブルの列の場合、次のようなことができます:
... GROUP BY collection_id, IF(collection_id IS NULL, id, 0)
GROUP BY
の2番目の式 定数値を返します0
collection_id
の場合 nullではありません。ただし、collection_idがnullの場合は、各行に一意の値を返します。
id
に注意してください これは、テーブル内で一意になるように定義されている列への参照です。主キーは良い候補です。単一の列に一意のインデックスがない場合は、一意の制約の各列、または各行で一意であることが保証されている式のセットに対して、これと同じタイプの式を繰り返すことができます。
... GROUP BY collection_id
, IF(collection_id IS NULL, col1, '')
, IF(collection_id IS NULL, col2, NULL)
, IF(collection_id IS NULL, col3, collection_id)
または、式を使用して一意の値を生成することもできます:
... GROUP BY IFNULL(collection_id,UUID())