所以我有两张桌子
TABLE_A
KEYA | VALUE
1 | 1.2
2 | 2.3
3 | 8.3
表-B
KEYB | VALUE
1 | 1.2
3 | 1.6
4 | 5.5
我想创建这两个表之间同步状态的报告。即生成每个记录以下信息:
我真的不需要文本(实际上,我不想要它)。可能只是价值本身:
[Table_A.KEYA (if present)]|[Table_A.Value (if present)]|[Table_B.KEYB (if present)]|[Table_B.Value (if present)]
给定的示例表应该产生:
|2|2.3| | |
|3|8.3|3|1.6|
| | |4|5.5|
我目前正在使用多个系列的连接和减少,但我认为这应该是很常见的DB和Oracle可能有更优雅(可能更有效)的方式。谁能拍出一些小贴士?
谢谢你!
F。
答案 0 :(得分:1)
select a.keya, a.value a_value, b.keyb, b.value b_value
from table_a a
full outer join table_b b
on a.keya = b.keyb
where a.keya IS NULL
or b.keya IS NULL
or (a.value is null and b.value is not null)
or (a.value is not null and b.value is null)
or a.value <> b.value
答案 1 :(得分:1)
我认为加入和减少很好: - )
以上示例将提供类似
的内容select *, null, null
from a
where not exists (select keyb
from b
where keyb = a.keya)
union all
select a.*, b.*
from a, b
where a.keya = b.keya
and a.value <> b.value -- please extend if null values are allowed
union all
select null, null, *
from b
where not exists (select keya
from a
where keya = b.keyb)
许多专栏很快就会变得混乱。