如何编写SQL关联T1、T2表生成含VAL列的目标表T3
SQL查询实现方案
核心逻辑
需求要求保留T1的全部数据,关联匹配T2的VAL字段,无匹配时VAL取值为NA,直接使用左外连接+空值替换函数即可实现。
通用SQL语句(支持MySQL、PostgreSQL、SQLite等主流数据库)
SELECT T1.Name, T1.ID, COALESCE(T2.VAL, 'NA') AS VAL FROM T1 LEFT JOIN T2 ON T1.ID = T2.ID;
补充说明
- 左连接
LEFT JOIN会保留左表T1的所有记录,即使右表T2没有匹配的关联ID COALESCE函数会判断T2.VAL是否为NULL,是则返回预设的'NA',否则返回T2.VAL本身,不同数据库可以替换为对应的空值处理函数:- Oracle环境可以换为
NVL(T2.VAL, 'NA') - SQL Server环境可以换为
ISNULL(T2.VAL, 'NA')
- Oracle环境可以换为
- 最终查询结果即为目标表T3,对应数据如下:
| Name | ID | VAL |
|---|---|---|
| AMAN | 10 | A00 |
| JIM | 11 | B0 |
| SAM | 12 | NA |
内容的提问来源于stack exchange,提问作者kiara
相关产品推荐
相关产品推荐

