日期:2014-05-18  浏览次数:20569 次

求一条看似简单的SQL语句(SQL-SERVER2000下)
现在有A表   和B表
2表中都含有   id   name   字段  

现在要选取name   字段  
要求主要从A表选   但是如果B表中也有这个ID的数据   那么就用B表的name   取代A表的

例如
A表
001     张三
002     李四

B表    
001     新张三

想得到的结果是
001   新张三
002   李四


希望高手指点!

------解决方案--------------------
select * from B
union
select * from A where not exists(select 1 from B where id=A.id)
------解决方案--------------------
select A.id,isnull(B.name,A.name)name from A left join B on A.id=B.id
------解决方案--------------------


select A.id , (CASE WHEN B.name IS NOT NULL THEN B.name ELSE A.name END ) AS NAME
from A left outer join B
ON A.id=B.id
------解决方案--------------------
declare @A table(ID varchar(4),Name varchar(8))
insert into @A select '001 ', '张三 '
insert into @A select '002 ', '李四 '

declare @B table(ID varchar(4),Name varchar(8))
insert into @B select '001 ', '新张三 '

select * from @B
union
select * from @A a where not exists(select 1 from @B where id=A.id)

/*
ID Name
---- --------
001 新张三
002 李四
*/
------解决方案--------------------
Select A表.id,isnull(B表.name,A表.name) From A表
Left join B表 A表.id = B表.id
------解决方案--------------------
select id,name from B
union
select id,name from A where not exists(select 1 from B where id=A.id)