首頁 > 資料庫 > mysql教程 > 如何使用最近的非 NULL 值在 SQL 中填入 NULL 值?

如何使用最近的非 NULL 值在 SQL 中填入 NULL 值?

DDD
發布: 2025-01-05 16:52:39
原創
297 人瀏覽過

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

如何在SQL 中將一行中的NULL 值替換為先前已知的值

在資料庫管理中,可能會出現需要NULL 值的情況會替換為有意義的資料。常見的情況是某列中缺少數據,需要從相鄰行推斷數據。

考慮一個包含兩列「日期」和「數字」的表格:

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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板