Oracle SQL列映射实现:基于列1与列3匹配生成列4
解决方案:Oracle SQL实现新增匹配列
嘿,这个需求用自连接或者关联子查询都能轻松搞定,下面给你两种实用的方案:
方案1:使用LEFT JOIN自连接
这种方式可读性强,适合需要展示全量数据的场景,匹配不到的行会自动显示空值,正好符合你的需求:
SELECT t1.column1, t1.column2, t1.column3, t2.column2 AS column4 FROM your_table t1 LEFT JOIN your_table t2 ON t1.column3 = t2.column1;
逻辑说明:
- 把同一张表用别名
t1(主表)和t2(匹配用的副表)区分开 - 用主表的
column3和副表的column1做关联条件 - 匹配成功时,副表的
column2就会作为column4的值,匹配失败则返回NULL(对应结果里的空单元格)
方案2:使用关联子查询
如果只是需要在查询结果中新增这一列,也可以用关联子查询的方式:
SELECT column1, column2, column3, (SELECT column2 FROM your_table t2 WHERE t2.column1 = t1.column3) AS column4 FROM your_table t1;
逻辑说明:
- 外层查询遍历每一行数据,内层子查询针对当前行的
column3值,去表中查找column1匹配的行,返回对应的column2 - 如果找不到匹配值,子查询返回
NULL,和需求一致
输入表格(示例数据)
| column1 | column2 | column3 |
|---|---|---|
| 2 | two | 3 |
| 5 | five | 8 |
| 3 | three | 10 |
| 8 | eight | 11 |
| 12 | one | 15 |
输出结果(两种方案都能得到如下结果)
| column1 | column2 | column3 | column4 |
|---|---|---|---|
| 2 | two | 3 | three |
| 5 | five | 8 | eight |
| 3 | three | 10 | |
| 8 | eight | 11 | |
| 12 | one | 15 |
内容的提问来源于stack exchange,提问作者omdurg
相关产品推荐
相关产品推荐

