1. ホーム
  2. mysql

GROUP BY - グループ化しない NULL

2023-09-20 04:49:48

質問

group by関数を使って結果を返す方法を考えています。

GROUP BYは期待どおりに動作していますが、私の質問は、NULLフィールドを無視したグループ化を行うことは可能ですか。指定されたフィールドがNULLであるすべての行が必要なため、NULLを一緒にグループ化しないようにするためです。

SELECT `table1`.*, 
    GROUP_CONCAT(id SEPARATOR ',') AS `children_ids`
FROM `table1` 
WHERE (enabled = 1) 
GROUP BY `ancestor` 

では、5つの行があり、祖先フィールドがNULLの場合、1つの行が返されます。

どのように解決するのですか?

おそらく、NULLカラムに何かを追加して一意にし、それを基にグループ化する必要があるのではないでしょうか?私はUUID()の代わりに使用するシーケンスのようなものを探していましたが、これは同じように動作するかもしれません。

SELECT `table1`.*, 
    IFNULL(ancestor,UUID()) as unq_ancestor
    GROUP_CONCAT(id SEPARATOR ',') AS `children_ids`
FROM `table1` 
WHERE (enabled = 1) 
GROUP BY unq_ancestor