SQL查询两张表的数据,优先查A表。没有就查B表?

怎么在两张表里查询存在的记录。例如A表有 id 和 name两个字段,B表也有id和name两个字段。怎么做到,先去查询A表id对应的name,如果A表的name为空 就去B表查id对应的name。B表是肯定有数据的,A表的name不一定有数据

2个回答

select ID=case when a.ID is not null then a.ID else b.ID end,
Name=case when a.ID is not null then a.Name else b.Name end
from tbB b
left join tbA a on b.ID=a.ID

如果A:B之间为1:1的对应关系:select A.id,nvl(A.name,B.name) from A,B where A.id=B.id(+)
如果A:B之间为1:n的对应关系:select A.id,(case when A.name is not null then A.name else (select B.name from B where A.id = B.id and rownum = 1) ) end as name from A

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐