首页 >数据库 >mysql教程 >如何根据公共键合并SQL中带有NULL值的行?

如何根据公共键合并SQL中带有NULL值的行?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-01 11:01:11222浏览

How Can I Merge Rows with NULL Values in SQL Based on a Common Key?

如何在 SQL 中合并行

问题:

考虑一个包含以下数据的表:

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn