問題:
想像一個場景,您有一個包含FK 列的資料庫表、字段1 和字段2。表格包含以下資料:
FK | Field1 | Field2 |
---|---|---|
3 | ABC | NULL |
3 | NULL | DEF |
您的目標是執行將這兩行合併為一行的查詢,產生以下輸出:
FK | Field1 | Field2 |
---|---|---|
3 | ABC | DEF |
答案:
可以利用諸如MAX 之類的聚合函數來實現這種資料合併。它們本質上會忽略 SQL Server、Oracle 和 Jet/Access 等平台上的 NULL 值。以下是使用 MAX 函數的範例查詢:
SELECT FK, MAX(Field1) AS Field1, MAX(Field2) AS Field2 FROM table1 GROUP BY FK;
在此查詢中,我們按 FK 列對行進行分組,並使用 MAX 函數檢索其他每一列(Field1 和 Field1)的最大值。字段2)。由於忽略 NULL 值,因此在合併行中傳回非 NULL 值(ABC 和 DEF)。
以下是測試資料的範例:
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 值的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!