【oracle】在left join时两表关联的字段为null时失效问题

oracle在left join时两表关联的字段为null时失效问题
问题描述 TESTA

subject score
语文 90
数学 30
英语 9
100
TESTB
subject score
语文 3
数学 79
英语 99
120
如果用left join会丢失掉TESTB的空值对应的120这个值
SELECT a.*, b.* FROM TESTA a LEFT JOIN TESTB b ON a.subject = b.SUBJECT;

SUBJECT SCORE SUBJECT SCORE
语文 90 语文 3
数学 30 数学 79
英语 9 英语 99
100
解决方案 【【oracle】在left join时两表关联的字段为null时失效问题】在left join前要将空数据赋值,
with a as (SELECT nvl(subject, '-')subject, score FROM TESTA ), b as (SELECT nvl(subject, '-')subject, score FROM TESTB ) SELECT a.*, b.* FROM a LEFT JOIN b ON a.subject = b.SUBJECT;

SUBJECT SCORE SUBJECT SCORE
语文 90 语文 3
数学 30 数学 79
英语 9 英语 99
- 100 - 120

    推荐阅读