以下に示すようなデータを含むテーブルについて考えます。
FK | Field1 | Field2 |
---|---|---|
3 | ABC | NULL |
3 | NULL | DEF |
目標は、これらの行を 1 つの行に結合する SELECT 操作:
FK | Field1 | Field2 |
---|---|---|
3 | ABC | DEF |
集計関数を使用して、NULL 値を無視し、複数の一致する行からの非 NULL 値を結合できます。このアプローチを示すクエリを次に示します。
SELECT FK, MAX(Field1) AS Field1, MAX(Field2) AS Field2 FROM table1 GROUP BY FK;
このクエリでは、MAX 集計関数を使用して、FK でグループ化された行から Field1 と Field2 の最大値を選択します。 NULL 値は集計関数によって無視されるため、これにより、NULL 以外の値のみが結合されることが保証されます。
提供されたテスト データの使用:
CREATE TABLE table1 (FK int, Field1 varchar(10), Field2 varchar(10)); INSERT INTO table1 VALUES (3, 'ABC', NULL); INSERT INTO table1 VALUES (3, NULL, 'DEF'); INSERT INTO table1 VALUES (4, 'GHI', NULL); INSERT INTO table1 VALUES (4, 'JKL', 'MNO'); INSERT INTO table1 VALUES (4, NULL, 'PQR');
クエリは目的の結果を返します:
FK | Field1 | Field2 |
---|---|---|
3 | ABC | DEF |
4 | JKL | PQR |
以上がSQL 集計関数は、NULL 値を持つ複数の行を 1 つの行にどのようにマージできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。