问题:
想象一个场景,您有一个包含 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中文网其他相关文章!