首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

sql数据库的有关问题100分 能得到结果就结贴给分

2012-02-01 
sql数据库的问题100分 能得到结果就结贴给分用a表更新b表a表有(a1,a2,a3)列列的内容如下;a1a2a31x1y11b1c1

sql数据库的问题100分 能得到结果就结贴给分
用a表更新b表         a表有(a1,a2,a3)列       列的内容如下;
a1       a2       a3
1         x1       y1
1         b1       c1
2         x1       y1
2         b1       c1
3         x3       y3
3         x1       y1
3         b1       c1
4         x4       y4
4         x3       y3
b表有(b1,b2,b3)列   内容如下
b1       b2       b3
1         x1       y1
1         b1       c1
2         x1       y1
2         b1       c1
20       x1       y1
所需要的结果是   ;插入时b表的b1列和a表的a1列内容相同时   不更新相同的行。
b1       b2       b3     .........更新后的b表列名
1         x1       y1   .........   b1列数据是1和a表a1内容相同   不更新
1         b1       c1   .........   b1列数据是1和a表a1内容相同   不更新
2         x1       y1   .........   b1列数据是2和a表a1内容相同   不更新
2         b1       c1          
20       x1       y1.........     a表里没有   就不管它
3         x3       y3   .........   a1列的数据是3   原b1没有         要更新          
3         x1       y1                     a表的a1列有3个3     要把3个行的内容
3         b1       c1                       都更新过来
4         x4       y4.........     a1列的数据是4   原b1没有       要更新
4         x3       y3                     把a1表的两个4的内容都更新过来

说明;那一堆汉字是解释;就是那a表更新b表。如果b表b1列里内容和a表a1列的内容相同就不更新那个一行。否则   就更新,   而且是多行的更新。如上面的   a1列的   3和4


[解决办法]
其实就是一个insert语句吧
insert b select * from a where a1 not in (select distinct b1 from b)
[解决办法]
create table a(a1 int,[a2] varchar(10),[a3] varchar(10))
insert into a select '1 ', 'x1 ', 'y1 '
insert into a select '1 ', 'b1 ', 'c1 '
insert into a select '2 ', 'x1 ', 'y1 '
insert into a select '2 ', 'b1 ', 'c1 '
insert into a select '3 ', 'x3 ', 'y3 '
insert into a select '3 ', 'x1 ', 'y1 '
insert into a select '3 ', 'b1 ', 'c1 '
insert into a select '4 ', 'x4 ', 'y4 '
insert into a select '4 ', 'x3 ', 'y3 '

create table b(b1 int,[b2] varchar(10),[b3] varchar(10))
insert into b select '1 ', 'x1 ', 'y1 '
insert into b select '1 ', 'b1 ', 'c1 '


insert into b select '2 ', 'x1 ', 'y1 '
insert into b select '2 ', 'b1 ', 'c1 '
insert into b select '20 ', 'x1 ', 'y1 '

select *
into c
from
(
select * from a
union
select * from b) as t

drop table b

sp_rename c, b

select * from b
[解决办法]
1楼正解

热点排行