首页 > 解决方案 > 如何强制 LEFT OUTER JOIN 返回 NULL 或空?

问题描述

SELECT table1.id, table2.name
FROM table1
LEFT JOIN table2
ON table1.id = table2.id;

所以如果 table1.id = NULL 我想从 table2 返回 NULL 或空字符串,即

ID,     NAME
1       name1
2       name2
null    null
3       name3

但现在出现“列不明确定义”错误,因为 table2 在 ID 列中有许多 NULL

标签: sqloracle

解决方案


它确实返回你想要的,没有任何错误:

SELECT table1.id, table2.name
FROM table1
LEFT JOIN table2
ON table1.id = table2.id;

其中,对于样本数据:

CREATE TABLE table1 ( id ) AS
SELECT 1 FROM DUAL UNION ALL
SELECT 2 FROM DUAL UNION ALL
SELECT NULL FROM DUAL UNION ALL
SELECT 3 FROM DUAL;

CREATE TABLE table2 ( id, name ) AS
SELECT 1, 'name1' FROM DUAL UNION ALL
SELECT 2, 'name2' FROM DUAL UNION ALL
SELECT 3, 'name3' FROM DUAL;

输出:

  身份证 | 姓名
---: | :----
   1 | 名称1
   2 | 名称2
   3 | 名称3
| 空值 

db<>在这里摆弄


推荐阅读