如何在LEFT JOIN查询中实现字段值合并(优先左表非空值)
实现LEFT JOIN时合并同名字段(优先左表值)
连接两个包含同名字段的表时,同名字段会出现重复。如果要执行LEFT JOIN并实现「优先保留左表字段值,左表值为NULL时用右表对应值替换」的逻辑(MERGE用于更新表,这里需要在查询语句中实现),可以使用COALESCE函数完成。
示例查询语句
SELECT date, col1, COALESCE(table1.col2, table2.col2) AS col2 FROM table1 LEFT JOIN table2 ON table1.date = table2.date;
COALESCE函数会依次检查传入的参数,返回第一个非NULL的值,完美匹配需求:左表col2有值时优先使用,左表col2为NULL时则取右表的col2值。
示例数据
Table1:
date | col1 | col2 ------------+------+------ '2023-08-01'| 1 | 20 '2023-08-02'| 2 | NULL '2023-08-03'| 3 | NULL '2023-08-04'| 4 | NULL '2023-08-05'| 5 | NULL '2023-08-06'| 6 | NULL
Table2:
date | col2 ------------+------ '2023-08-03'| 22 '2023-08-04'| 23
预期结果
date | col1 | col2 ------------+------+------ '2023-08-01'| 1 | 20 '2023-08-02'| 2 | NULL '2023-08-03'| 3 | 22 '2023-08-04'| 4 | 23 '2023-08-05'| 5 | NULL '2023-08-06'| 6 | NULL
内容的提问来源于stack exchange,提问作者Owen
相关产品推荐
相关产品推荐

