有两张表 表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 (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的值.如何实现啊?谢谢,请说的详细一点。
表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
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 行)
*/
52 φ6.5mm φ24mm 4000 这个不是区域有交叠
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))