ホームページ > データベース > mysql チュートリアル > MySQL の GROUP BY 句で NULL 値が予期しないグループを作成しないようにするにはどうすればよいですか?

MySQL の GROUP BY 句で NULL 値が予期しないグループを作成しないようにするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-19 19:34:13
オリジナル
932 人が閲覧しました

How Can I Prevent NULL Values from Creating Unexpected Groups in MySQL's GROUP BY Clause?

GROUP BY: NULL 値の無視

データベース管理では、GROUP BY 関数は、特定の列の類似した値に基づいて行をグループ化するために機能します。または列。ただし、NULL 値は個別のグループとして扱われるため、NULL フィールドが検出された場合に意図しない結果が生じる可能性があります。

次のクエリを考えてみましょう。

SELECT `table1`.*, 
    GROUP_CONCAT(id SEPARATOR ',') AS `children_ids`
FROM `table1` 
WHERE (enabled = 1) 
GROUP BY `ancestor`
ログイン後にコピー

table1 に次の 5 つの行があると仮定します。 ancestor フィールドが NULL に設定されている場合、クエリは 1 行のみを返しますが、望ましい結果は 5 行すべてを取得することです。 rows.

この問題を解決するには、一意の識別子を導入して NULL 値を区別する戦略を採用できます。以下に例を示します。

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() 関数を使用して、祖先列の NULL 値に UUID (Universally Unique Identifier) を割り当てます。これにより、行ごとに一意の識別子が作成され、NULL 値を効果的に区別し、グループ化できるようになります。これにより、先祖フィールドが NULL であるかどうかに関係なく、すべての行が結果セットに返されることが保証されます。

以上がMySQL の GROUP BY 句で NULL 値が予期しないグループを作成しないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート