考虑一个包含数据的表,如下所示:
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中文网其他相关文章!