昨晚还是没搞明白那批量修改的,现给出数据大家试试:
表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的值。

解决方案 »

  1.   

    搞错了一点,表b中per和表a中的so是一一对应的。
      

  2.   

    搞错了,a中so和b中的per是一一对应的。不好意思。
      

  3.   

    update a
    set a.num=b.num
    from a
      join b 
        on a.so=b.per
      

  4.   

    汗。先要给这两张表添加个序列啊
    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
      

  5.   

    update a
    set num=num1
    from b
    where a.so=b.per
      

  6.   

    SQL2000的:alter table a add id int identity
    alter table b add id int identitygoupdate a
    set a.num=b.num
    from a
      join b 
        on a.id=b.id
      

  7.   

    结果不对哦。。有null的那里就没弄到了,其它的也不对。
      

  8.   

    if object_id('a') is not null drop table a 
     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 行受影响)
    */
      

  9.   

    表a中的K金类的num变为2 6 6 6了,玉石杯的全部为5.
      

  10.   

    以后没问题后再删除辅助IDalter table a drop column id
    alter table b drop column id
      

  11.   

    if object_id('a') is not null drop table a 
     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 行受影响)
    */
      

  12.   

    加个序列栏位.可以解决NULL的问题..