ホームページ > データベース > mysql チュートリアル > 最新の非 NULL 値を使用して SQL に NULL 値を入力するにはどうすればよいですか?

最新の非 NULL 値を使用して SQL に NULL 値を入力するにはどうすればよいですか?

DDD
リリース: 2025-01-05 16:52:39
オリジナル
253 人が閲覧しました

How to Fill NULL Values in SQL Using the Most Recent Non-NULL Value?

SQL で行内の NULL 値を以前の既知の値に置き換える方法

データベース管理では、NULL 値が必要な状況が発生することがあります。意味のあるデータに置き換えられます。一般的なシナリオの 1 つは、列にデータが欠落しており、隣接する行からデータを推測する必要がある場合です。

2 つの列、'date' と 'number' を持つテーブルを考えてみましょう:

date   number
----   ------
1      3
2      NULL
3      5
4      NULL
5      NULL
6      2
ログイン後にコピー

目標は、「number」列の NULL 値を「date」列の最新の非 NULL 値に置き換えることです。これは、日付 2 の「数値」が NULL の場合、3 (以前の既知の値) に置き換える必要があることを意味します。同様に、日付 4 と 5 の NULL 値は 5 に置き換える必要があります。

SQL Server では、次のクエリを使用してこれを実現できます。

DECLARE @Table TABLE(
        ID INT,
        Val INT
)

INSERT INTO @Table (ID,Val) SELECT 1, 3
INSERT INTO @Table (ID,Val) SELECT 2, NULL
INSERT INTO @Table (ID,Val) SELECT 3, 5
INSERT INTO @Table (ID,Val) SELECT 4, NULL
INSERT INTO @Table (ID,Val) SELECT 5, NULL
INSERT INTO @Table (ID,Val) SELECT 6, 2

SELECT  *,
        ISNULL(Val, (SELECT TOP 1 Val 
                   FROM @Table 
                   WHERE ID < t.ID AND Val IS NOT NULL 
                   ORDER BY ID DESC))
FROM    @Table t
ログイン後にコピー

クエリはサブクエリを使用します。 NULL 値を持つ各行の「Val」列で最初の非 NULL 値を検索します。次に、ISNULL 関数を使用して、NULL 値を選択した非 NULL 値で置き換えます。

クエリの結果は次のとおりです。

date   number
----   ------
1      3
2      3
3      5
4      5
5      5
6      2
ログイン後にコピー

'number 内の NULL 値' 列は、'date' 列の最新の非 NULL 値に正常に置き換えられました。この手法は、さまざまなデータベース シナリオで欠落データを埋めたり、データの整合性を確保したりするのに役立ちます。

以上が最新の非 NULL 値を使用して SQL に NULL 値を入力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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