sql >> データベース >  >> RDS >> Mysql

MySQLGroupByおよびNull値でのグループ化をスキップ

    テーブルに一意の列(または列のセット)がある場合は、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())
    


    1. DjangoJSONFieldフィルタリング

    2. mysqlの特定のユーザーの合計ログイン-ログアウト時間を計算する

    3. mysql組み込みデータベースをSQLテキストファイルにダンプします

    4. MySQLで数値を8進数に変換する2つの方法