sql - 如何强制 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
解决方案
它确实返回你想要的,没有任何错误:
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<>在这里摆弄
推荐阅读
- mysql - 索引应该放在表的状态列上吗?
- r - ggplot2错误:颜色编码为数字必须为正
- three.js - ThreeJS 世界单位到像素的转换
- docker - Rasa 2.1.2 的 Docker-compose 部署
- salesforce - 创建的 contentVersion (image/png) 为空
- html - 响应式画廊 (HTML/CCS) 不工作
- java - 向 RecyclerView 添加多个不同的 CardView
- postgresql - 在没有时区字段的时间戳上查询不使用索引
- nuget - 我们可以用命令参数替换 nuget.config 文件吗?
- gitlab - 在 gitlab 中对 RDF 存储进行版本控制的可能方法