昨晚还是没搞明白那批量修改的,现给出数据大家试试:
表a
kind name num so
-------------------- -------------------- ----------- -----------------
K金类 G750金氧化锆手链 0 55
K金类 G750金氧化锆手链 0 222
K金类 G750金氧化锆手链 0 222
K金类 G750金氧化锆手链 0 222
珠宝类 G750氧化锆手链 0 5
珠宝类 G750氧化锆手链 0 6
珠宝类 G750氧化锆手链 0 55
珠宝类 G750氧化锆手链 0 55
珠宝类 G750氧化锆手链 0 9
珠宝类 G750氧化锆手链 0 10
珠宝类 G750氧化锆手链 0 11
珠宝类 G750氧化锆手链 0 12
翡翠类 NULL 0 NULL
翡翠绿 NULL 0 NULL
翡翠类 NULL 0 NULL
翡翠绿 NULL 0 NULL
翡翠类 NULL 0 NULL
翡翠绿 NULL 0 NULL
翡翠类 NULL 0 NULL
翡翠绿 NULL 0 NULL
翡翠类 NULL 0 NULL
翡翠绿 NULL 0 NULL
翡翠类 NULL 0 NULL
翡翠绿 NULL 0 NULL
玉石类 玉杯 0 33
玉石类 玉杯 0 33
玉石类 玉杯 0 33
玉石类 玉杯 0 33
玉石类 玉杯 0 33
玉石类 玉杯 0 33 表b
kind name num1 per
-------------------- -------------------- ----------- ------------------
K金类 G750金氧化锆手链 9 0
K金类 G750金氧化锆手链 8 2
K金类 G750金氧化锆手链 7 25
K金类 G750金氧化锆手链 6 7
珠宝类 G750氧化锆手链 55 25
珠宝类 G750氧化锆手链 4 60
珠宝类 G750氧化锆手链 5 7
珠宝类 G750氧化锆手链 2 58
珠宝类 G750氧化锆手链 87 9
珠宝类 G750氧化锆手链 2 10
珠宝类 G750氧化锆手链 5 11
珠宝类 G750氧化锆手链 2 12
翡翠类 NULL 2 NULL
翡翠绿 NULL 3 NULL
翡翠类 NULL 2 NULL
翡翠绿 NULL 10 NULL
翡翠类 NULL 21 NULL
翡翠绿 NULL 32 NULL
翡翠类 NULL 54 NULL
翡翠绿 NULL 6 NULL
翡翠类 NULL 3 NULL
翡翠绿 NULL 55 NULL
翡翠类 NULL 21 NULL
翡翠绿 NULL 1 NULL
玉石类 玉杯 45 53
玉石类 玉杯 66 35
玉石类 玉杯 68 35
玉石类 玉杯 868 35
玉石类 玉杯 68 34
玉石类 玉杯 98 37
就是把表a的num值变为表b中num1的值。
表a
kind name num so
-------------------- -------------------- ----------- -----------------
K金类 G750金氧化锆手链 0 55
K金类 G750金氧化锆手链 0 222
K金类 G750金氧化锆手链 0 222
K金类 G750金氧化锆手链 0 222
珠宝类 G750氧化锆手链 0 5
珠宝类 G750氧化锆手链 0 6
珠宝类 G750氧化锆手链 0 55
珠宝类 G750氧化锆手链 0 55
珠宝类 G750氧化锆手链 0 9
珠宝类 G750氧化锆手链 0 10
珠宝类 G750氧化锆手链 0 11
珠宝类 G750氧化锆手链 0 12
翡翠类 NULL 0 NULL
翡翠绿 NULL 0 NULL
翡翠类 NULL 0 NULL
翡翠绿 NULL 0 NULL
翡翠类 NULL 0 NULL
翡翠绿 NULL 0 NULL
翡翠类 NULL 0 NULL
翡翠绿 NULL 0 NULL
翡翠类 NULL 0 NULL
翡翠绿 NULL 0 NULL
翡翠类 NULL 0 NULL
翡翠绿 NULL 0 NULL
玉石类 玉杯 0 33
玉石类 玉杯 0 33
玉石类 玉杯 0 33
玉石类 玉杯 0 33
玉石类 玉杯 0 33
玉石类 玉杯 0 33 表b
kind name num1 per
-------------------- -------------------- ----------- ------------------
K金类 G750金氧化锆手链 9 0
K金类 G750金氧化锆手链 8 2
K金类 G750金氧化锆手链 7 25
K金类 G750金氧化锆手链 6 7
珠宝类 G750氧化锆手链 55 25
珠宝类 G750氧化锆手链 4 60
珠宝类 G750氧化锆手链 5 7
珠宝类 G750氧化锆手链 2 58
珠宝类 G750氧化锆手链 87 9
珠宝类 G750氧化锆手链 2 10
珠宝类 G750氧化锆手链 5 11
珠宝类 G750氧化锆手链 2 12
翡翠类 NULL 2 NULL
翡翠绿 NULL 3 NULL
翡翠类 NULL 2 NULL
翡翠绿 NULL 10 NULL
翡翠类 NULL 21 NULL
翡翠绿 NULL 32 NULL
翡翠类 NULL 54 NULL
翡翠绿 NULL 6 NULL
翡翠类 NULL 3 NULL
翡翠绿 NULL 55 NULL
翡翠类 NULL 21 NULL
翡翠绿 NULL 1 NULL
玉石类 玉杯 45 53
玉石类 玉杯 66 35
玉石类 玉杯 68 35
玉石类 玉杯 868 35
玉石类 玉杯 68 34
玉石类 玉杯 98 37
就是把表a的num值变为表b中num1的值。
set a.num=b.num
from a
join b
on a.so=b.per
select id=identity(int ,1,1),* into #1 from tb1
select id=identity(int ,1,1),* into #2 from tb2update #1
set num=num1
from #2
where #2.id=#1.id
set num=num1
from b
where a.so=b.per
alter table b add id int identitygoupdate a
set a.num=b.num
from a
join b
on a.id=b.id
go
create table a([kind] varchar(10),[name] varchar(20),[num] int,[so] int)
insert a select 'K金类','G750金氧化锆手链',0,55
union all select 'K金类','G750金氧化锆手链',0,222
union all select 'K金类','G750金氧化锆手链',0,222
union all select 'K金类','G750金氧化锆手链',0,222
union all select '珠宝类','G750氧化锆手链',0,5
union all select '珠宝类','G750氧化锆手链',0,6
union all select '珠宝类','G750氧化锆手链',0,55
union all select '珠宝类','G750氧化锆手链',0,55
union all select '珠宝类','G750氧化锆手链',0,9
union all select '珠宝类','G750氧化锆手链',0,10
union all select '珠宝类','G750氧化锆手链',0,11
union all select '珠宝类','G750氧化锆手链',0,12
union all select '翡翠类',NULL,0,NULL
union all select '翡翠绿',NULL,0,NULL
union all select '翡翠类',NULL,0,NULL
union all select '翡翠绿',NULL,0,NULL
union all select '翡翠类',NULL,0,NULL
union all select '翡翠绿',NULL,0,NULL
union all select '翡翠类',NULL,0,NULL
union all select '翡翠绿',NULL,0,NULL
union all select '翡翠类',NULL,0,NULL
union all select '翡翠绿',NULL,0,NULL
union all select '翡翠类',NULL,0,NULL
union all select '翡翠绿',NULL,0,NULL
union all select '玉石类','玉杯',0,33
union all select '玉石类','玉杯',0,33
union all select '玉石类','玉杯',0,33
union all select '玉石类','玉杯',0,33
union all select '玉石类','玉杯',0,33
union all select '玉石类','玉杯',0,33
go
if object_id('b') is not null drop table b
go
create table b([kind] varchar(10),[name] varchar(20),[num1] int,[per] int)
insert b select 'K金类','G750金氧化锆手链',9,55
union all select 'K金类','G750金氧化锆手链',8,222
union all select 'K金类','G750金氧化锆手链',7,222
union all select 'K金类','G750金氧化锆手链',6,222
union all select '珠宝类','G750氧化锆手链',55,5
union all select '珠宝类','G750氧化锆手链',4,6
union all select '珠宝类','G750氧化锆手链',5,55
union all select '珠宝类','G750氧化锆手链',2,55
union all select '珠宝类','G750氧化锆手链',87,9
union all select '珠宝类','G750氧化锆手链',2,10
union all select '珠宝类','G750氧化锆手链',5,11
union all select '珠宝类','G750氧化锆手链',2,12
union all select '翡翠类',NULL,2,NULL
union all select '翡翠绿',NULL,3,NULL
union all select '翡翠类',NULL,2,NULL
union all select '翡翠绿',NULL,10,NULL
union all select '翡翠类',NULL,21,NULL
union all select '翡翠绿',NULL,32,NULL
union all select '翡翠类',NULL,54,NULL
union all select '翡翠绿',NULL,6,NULL
union all select '翡翠类',NULL,3,NULL
union all select '翡翠绿',NULL,55,NULL
union all select '翡翠类',NULL,21,NULL
union all select '翡翠绿',NULL,1,NULL
union all select '玉石类','玉杯',45,33
union all select '玉石类','玉杯',66,33
union all select '玉石类','玉杯',68,33
union all select '玉石类','玉杯',868,33
union all select '玉石类','玉杯',68,33
union all select '玉石类','玉杯',98,33
goalter table a add id int identity
alter table b add id int identitygoupdate a
set a.num=b.num1
from a
join b
on a.id=b.idselect * from a
/*
kind name num so id
---------- -------------------- ----------- ----------- -----------
K金类 G750金氧化锆手链 9 55 1
K金类 G750金氧化锆手链 8 222 2
K金类 G750金氧化锆手链 7 222 3
K金类 G750金氧化锆手链 6 222 4
珠宝类 G750氧化锆手链 55 5 5
珠宝类 G750氧化锆手链 4 6 6
珠宝类 G750氧化锆手链 5 55 7
珠宝类 G750氧化锆手链 2 55 8
珠宝类 G750氧化锆手链 87 9 9
珠宝类 G750氧化锆手链 2 10 10
珠宝类 G750氧化锆手链 5 11 11
珠宝类 G750氧化锆手链 2 12 12
翡翠类 NULL 2 NULL 13
翡翠绿 NULL 3 NULL 14
翡翠类 NULL 2 NULL 15
翡翠绿 NULL 10 NULL 16
翡翠类 NULL 21 NULL 17
翡翠绿 NULL 32 NULL 18
翡翠类 NULL 54 NULL 19
翡翠绿 NULL 6 NULL 20
翡翠类 NULL 3 NULL 21
翡翠绿 NULL 55 NULL 22
翡翠类 NULL 21 NULL 23
翡翠绿 NULL 1 NULL 24
玉石类 玉杯 45 33 25
玉石类 玉杯 66 33 26
玉石类 玉杯 68 33 27
玉石类 玉杯 868 33 28
玉石类 玉杯 68 33 29
玉石类 玉杯 98 33 30(30 行受影响)
*/
alter table b drop column id
go
create table a([kind] varchar(10),[name] varchar(20),[num] int,[so] int)
insert a select 'K金类','G750金氧化锆手链',0,55
union all select 'K金类','G750金氧化锆手链',0,222
union all select 'K金类','G750金氧化锆手链',0,222
union all select 'K金类','G750金氧化锆手链',0,222
union all select '珠宝类','G750氧化锆手链',0,5
union all select '珠宝类','G750氧化锆手链',0,6
union all select '珠宝类','G750氧化锆手链',0,55
union all select '珠宝类','G750氧化锆手链',0,55
union all select '珠宝类','G750氧化锆手链',0,9
union all select '珠宝类','G750氧化锆手链',0,10
union all select '珠宝类','G750氧化锆手链',0,11
union all select '珠宝类','G750氧化锆手链',0,12
union all select '翡翠类',NULL,0,NULL
union all select '翡翠绿',NULL,0,NULL
union all select '翡翠类',NULL,0,NULL
union all select '翡翠绿',NULL,0,NULL
union all select '翡翠类',NULL,0,NULL
union all select '翡翠绿',NULL,0,NULL
union all select '翡翠类',NULL,0,NULL
union all select '翡翠绿',NULL,0,NULL
union all select '翡翠类',NULL,0,NULL
union all select '翡翠绿',NULL,0,NULL
union all select '翡翠类',NULL,0,NULL
union all select '翡翠绿',NULL,0,NULL
union all select '玉石类','玉杯',0,33
union all select '玉石类','玉杯',0,33
union all select '玉石类','玉杯',0,33
union all select '玉石类','玉杯',0,33
union all select '玉石类','玉杯',0,33
union all select '玉石类','玉杯',0,33
go
if object_id('b') is not null drop table b
go
create table b([kind] varchar(10),[name] varchar(20),[num1] int,[per] int)
insert b select 'K金类','G750金氧化锆手链',9,55
union all select 'K金类','G750金氧化锆手链',8,222
union all select 'K金类','G750金氧化锆手链',7,222
union all select 'K金类','G750金氧化锆手链',6,222
union all select '珠宝类','G750氧化锆手链',55,5
union all select '珠宝类','G750氧化锆手链',4,6
union all select '珠宝类','G750氧化锆手链',5,55
union all select '珠宝类','G750氧化锆手链',2,55
union all select '珠宝类','G750氧化锆手链',87,9
union all select '珠宝类','G750氧化锆手链',2,10
union all select '珠宝类','G750氧化锆手链',5,11
union all select '珠宝类','G750氧化锆手链',2,12
union all select '翡翠类',NULL,2,NULL
union all select '翡翠绿',NULL,3,NULL
union all select '翡翠类',NULL,2,NULL
union all select '翡翠绿',NULL,10,NULL
union all select '翡翠类',NULL,21,NULL
union all select '翡翠绿',NULL,32,NULL
union all select '翡翠类',NULL,54,NULL
union all select '翡翠绿',NULL,6,NULL
union all select '翡翠类',NULL,3,NULL
union all select '翡翠绿',NULL,55,NULL
union all select '翡翠类',NULL,21,NULL
union all select '翡翠绿',NULL,1,NULL
union all select '玉石类','玉杯',45,33
union all select '玉石类','玉杯',66,33
union all select '玉石类','玉杯',68,33
union all select '玉石类','玉杯',868,33
union all select '玉石类','玉杯',68,33
union all select '玉石类','玉杯',98,33
go
-->增加辅助字段ID
alter table a add id int identity
alter table b add id int identitygo
-->更新值
update a
set a.num=b.num1
from a
join b
on a.id=b.id
-->删除辅助字段
alter table a drop column id
alter table b drop column id
-->查询结果
select * from a
/*
kind name num so
---------- -------------------- ----------- -----------
K金类 G750金氧化锆手链 9 55
K金类 G750金氧化锆手链 8 222
K金类 G750金氧化锆手链 7 222
K金类 G750金氧化锆手链 6 222
珠宝类 G750氧化锆手链 55 5
珠宝类 G750氧化锆手链 4 6
珠宝类 G750氧化锆手链 5 55
珠宝类 G750氧化锆手链 2 55
珠宝类 G750氧化锆手链 87 9
珠宝类 G750氧化锆手链 2 10
珠宝类 G750氧化锆手链 5 11
珠宝类 G750氧化锆手链 2 12
翡翠类 NULL 2 NULL
翡翠绿 NULL 3 NULL
翡翠类 NULL 2 NULL
翡翠绿 NULL 10 NULL
翡翠类 NULL 21 NULL
翡翠绿 NULL 32 NULL
翡翠类 NULL 54 NULL
翡翠绿 NULL 6 NULL
翡翠类 NULL 3 NULL
翡翠绿 NULL 55 NULL
翡翠类 NULL 21 NULL
翡翠绿 NULL 1 NULL
玉石类 玉杯 45 33
玉石类 玉杯 66 33
玉石类 玉杯 68 33
玉石类 玉杯 868 33
玉石类 玉杯 68 33
玉石类 玉杯 98 33(30 行受影响)
*/