問題:
考慮一個包含以下數據的表:
FK | Field1 | Field2 |
---|---|---|
3 | ABC | NULL |
3 | NULL | DEF |
目標是從表格中檢索合併行,其中Field1 和Field2 值針對相同的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 分組的行中選擇一個值。可以使用檢索分組行中單一值的任何聚合函數。
範例資料與結果:
考慮以下範例資料:
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中文網其他相關文章!