我在加入两张桌子的内容时遇到了一些麻烦。这是当前的情况,表格应显示为结果
表a
id | income
----------
1 | 100
2 | 200
3 | 300
4 | 400
5 | 500
表b
id | outcome
----------
1 | 10
2 | 20
6 | 60
7 | 70
3 | 30
结果表
id | income | outcome | balance
--------------------------------
1 | 100 | 10 | 100-10=90
2 | 200 | 20 | 200-20=180
3 | 300 | 30 | 300-30=270
4 | 400 | 0 | 400-0=400
5 | 500 | 0 | 500-0=500
6 | 0 | 60 | 0-60=-60
7 | 0 | 70 | 0-70=-70
请提供代码,不要使用声明
where id not in (select id from ...)
因为我正在使用的系统不支持not in
语句。
非常感谢您的帮助
答案 0 :(得分:0)
您可以使用full outer join
:
select coalesce(a.id, b.id) as id,
coalesce(a.income, 0) as income,
coalesce(b.outcome, 0) as outcome,
(coalesce(a.income, 0) - coalesce(b.outcome, 0)) as balance
from tablea a full outer join
tableb b
on a.id = b.id;
您没有指定数据库。 Full outer join
是ANSI标准,并且受大多数数据库的支持。