有两张表 表1
列1 (varchar型)      列2 (varchar型)      列3 (varchar型)      列4(int)   
  51                   φ5.5mm                    φ22.5mm             3000  
  52                   φ6.5mm                    φ24mm               4000
  
  ......   
  表2   
  列1 (varchar型)      列2(varchar型)       列3 (int)        
  51055                    φ5.5mm                     3000       
  51200                    φ20mm                      3000       
  52075                    φ7.5mm                     4000 
  52115                    φ11.5mm                    4000
  ......
表1的列1和表2的列1前两位是对应的,对应不同的大类,表2中列1后三位是根据列2中的数字来编的,对应小类。根据表2.列2在表1.列2和表1.列3确定的范围取表1.列4的值对应更新表2.列3的值.如何实现啊?谢谢,请说的详细一点。

解决方案 »

  1.   

    update 
      表2 
    set 
      列3=a.列4 from 表1 a,表2 b 
    where 
      a.列1=left(b.列1,2)
    and 
      b.列2 between a.列2 and a.列3
      

  2.   


    create table tb1(列1 varchar(10), 列2 varchar(10), 列3 varchar(10), 列4 int)
    insert into tb1 values('51' , 'φ5.5mm' , 'φ22.5mm', 3000 )
    insert into tb1 values('52' , 'φ6.5mm' , 'φ24mm' , 4000 )
    create table tb2(列1 varchar(10), 列2 varchar(10), 列3 int)
    insert into tb2 values('51055' , 'φ5.5mm' ,null)
    insert into tb2 values('51200' , 'φ20mm' ,null)
    insert into tb2 values('52075' , 'φ7.5mm' ,null)
    insert into tb2 values('52115' , 'φ11.5mm',null)
    goupdate tb2 
    set 列3 = tb1.列4
    from tb2 , tb1
    where left(tb2.列1,2) = tb1.列1 and 
    cast(replace(replace(tb2.列2,'φ',''),'mm','') as decimal(18,1)) between
    cast(replace(replace(tb1.列2,'φ',''),'mm','') as decimal(18,1)) and
    cast(replace(replace(tb1.列3,'φ',''),'mm','') as decimal(18,1)) select * from tb2drop table tb2 , tb1/*
    列1         列2         列3          
    ---------- ---------- ----------- 
    51055      φ5.5mm     3000
    51200      φ20mm      3000
    52075      φ7.5mm     4000
    52115      φ11.5mm    4000(所影响的行数为 4 行)
    */
      

  3.   

          update tb2 set tb2.列3=tb1.列4 from tb1,tb2 where tb1.列1=left(tb2.列1,2)
      

  4.   

    51                  φ5.5mm                    φ22.5mm            3000  
      52                  φ6.5mm                    φ24mm              4000 这个不是区域有交叠
      

  5.   


    update 表2
    set 列3= t1.列4
    from 表2 t2,表1 t1
    where t1.列1=left(t2.列1,2) and
         cast(replace(replace(t2.列2,'φ',''),'mm','')as decimal(10,2)) between 
         cast(replace(replace(t1.列2,'φ',''),'mm','')as decimal(10,2)) and
         cast(replace(replace(t2.列3,'φ',''),'mm','')as decimal(10,2))