求一条看似简单的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)