用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
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 b select * from a where a1 not in (select distinct b1 from b)
union
select * from b就能实现了
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 tdrop table bsp_rename c, bselect * from b
union
select * from b就能实现了如果有主键的话,这个也可以得到结果