首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求一条看似简单的SQL语句(SQL-SERVER2000下)解决方案

2012-01-14 
求一条看似简单的SQL语句(SQL-SERVER2000下)现在有A表和B表2表中都含有idname字段现在要选取name字段要求

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

热点排行