考慮一個包含資料的表,如下所示:
FK | Field1 | Field2 |
---|---|---|
3 | ABC | NULL |
3 | NULL | DEF |
目標是執行將這些行合併為一行的SELECT操作:
FK | Field1 | Field2 |
---|---|---|
3 | ABC | DEF |
可以使用聚合函數來忽略 NULL 值並組合多個匹配行中的非 NULL 值。下面的查詢示範了這種方法:
SELECT FK, MAX(Field1) AS Field1, MAX(Field2) AS Field2 FROM table1 GROUP BY FK;
在此查詢中,我們使用 MAX 聚合函數從按 FK 分組的行中選擇 Field1 和 Field2 的最大值。由於聚合函數會忽略 NULL 值,因此這可確保僅組合非 NULL 值。
使用提供的測試資料:
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中文網其他相關文章!