ホームページ > データベース > mysql チュートリアル > 共通キーに基づいて SQL で NULL 値を含む行をマージするにはどうすればよいですか?

共通キーに基づいて SQL で NULL 値を含む行をマージするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-01 11:01:11
オリジナル
217 人が閲覧しました

How Can I Merge Rows with NULL Values in SQL Based on a Common Key?

SQL で行をマージする方法

問題:

次のデータを含むテーブルについて考えます:

FK Field1 Field2
3 ABC NULL
3 NULL DEF

目的は、フィールド 1 とフィールド 2 の値が含まれるマージされた行をテーブルから取得することです。同じ FK に対して結合されます:

FK Field1 Field2
3 ABC DEF

解決策:

この結果を達成するには、集約関数を使用できます。集計関数は NULL 値を無視し、非 NULL 値のマージを許可します。たとえば、次のクエリ (SQL Server Express 2008 R2 でテスト済み) を使用できます。

SELECT
    FK,
    MAX(Field1) AS Field1,
    MAX(Field2) AS Field2
FROM
    table1
GROUP BY
    FK;
ログイン後にコピー

MAX 関数を使用して、FK でグループ化された行から 1 つの値を選択します。グループ化された行内の単一の値を取得する任意の集計関数を使用できます。

サンプル データと結果:

次のサンプル データを検討してください:

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
ログイン後にコピー

このように、行は効果的にマージされ、Field1 列と Field2 列の同じ FK の非 NULL 値が結合されます。

以上が共通キーに基づいて SQL で NULL 値を含む行をマージするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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