尝试获取 SQL LEFT JOIN 以在另一个表中没有相应行的情况下返回 NULL。
表 1 - T1
id n
1 aaa
2 bbb
3 ccc
表 2 - T2
t1_id t3_id
1 1
2 1
3 1
1 2
3 2
2 3
3 3
在 T2 中,请注意没有 2 - 2 或 1 - 3 的组合。
select *
from t1
left join t2
on t1.id = t2.t1_id
order by t2.t3_id, t1_id
输出:
id n t1_id t3_id
1 aaa 1 1
2 bbb 2 1
3 ccc 3 1
1 aaa 1 2
3 ccc 3 2
2 bbb 2 3
3 ccc 3 3
我期待会有另外两行
1 aaa null null
2 bbb null null
...对应于前面提到的 T2 中缺失的组合。
请注意 ORDER BY 只是为了方便起见 - 它对返回的行没有影响。
请帮助我理解为什么会发生这种情况,以及如何解决它。