交换 2 个表的列值

swapping the column value of 2 tables

您好,我有 2 个表 tab1tab2。我想用 tab2id 列替换 tab1id 列。我可以在单个 select 查询中完成吗?

输入:

Tab1
id  name
101  AA
102  BB
102  CC

Tab2
id  Name
11   XX
12   YY
13   ZZ

输出应该是

Tab1
id  Name
11   AA
12   BB
13   CC

Tab2
id  name
101  XX
102  YY
103  ZZ

谢谢 安卡

您确定 Tab2 的最后一行是 102, 'ZZ'103, 'ZZ'(即 id 不同且有序)。

如果是 103, 'ZZ',则以下查询有效:

select decode(sign(max(ascii(name))-77),-1, min(id), max(id)) id, name
  from
( 
select t1.id, t1.dr, t2.name from
(
  select id, dense_rank() over (order by id) dr from Tab1
  union all
  select id, dense_rank() over (order by id) dr from Tab2
) t1
 join
(
  select name, dense_rank() over (order by id) dr from Tab1
  union all
  select name, dense_rank() over (order by id) dr from Tab2
) t2 on ( t1.dr = t2.dr )
)
group by name;

SQL Fiddle Demo