SQL での NULL 値を含むデータのグループ化
GROUP BY 関数を使用したデータのグループ化は、データを要約して取得するための強力な手法です。ただし、場合によっては、NULL 値を無視してデータをグループ化することが望ましい場合があります。これは、GROUP BY 句を巧みに操作することで実現できます。
指定されたクエリでは、GROUP BY を使用して祖先フィールドごとに行がグループ化されます。ただし、複数の行で ancestor が NULL の場合、それらはグループ化され、1 行のみが返されます。この問題を解決するには、IFNULL 関数を使用するトリックを使用できます。
クエリを次のように変更できます。
SELECT `table1`.*, IFNULL(ancestor,UUID()) as unq_ancestor GROUP_CONCAT(id SEPARATOR ',') AS `children_ids` FROM `table1` WHERE (enabled = 1) GROUP BY unq_ancestor
この改訂されたクエリでは、IFNULL を使用して一意のクエリを割り当てます。識別子 (UUID) を祖先フィールドの NULL 値に変換します。これにより、グループ化に使用される unq_ancestor という一意の列が作成されます。その結果、NULL 祖先値を持つ行を含むすべての行が個別にグループ化され、必要なデータをすべて取得できるようになります。
以上が「GROUP BY」句で NULL 値を処理しながら SQL データをグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。