表A
商家编号 号段起 号段终
cd0001 1 10
cd0002 11 20
cd0003 21 30
...
...表B
卡号 商家编号
1 null
2 null
3 null
4 null
5 null
6 null
7 null
8 null
9 null
10 null
11 null
12 null
13 null
14 null
.. ..
.. ..
.. ..现在要使用sql语句或者存储过程让表B中商家编号按卡号更新成表A中的商家编号应该怎么写呢?
即B表中的1-10号的商家编号更新成cd0001,11-20号的商家编号更新成cd0002.....
商家编号 号段起 号段终
cd0001 1 10
cd0002 11 20
cd0003 21 30
...
...表B
卡号 商家编号
1 null
2 null
3 null
4 null
5 null
6 null
7 null
8 null
9 null
10 null
11 null
12 null
13 null
14 null
.. ..
.. ..
.. ..现在要使用sql语句或者存储过程让表B中商家编号按卡号更新成表A中的商家编号应该怎么写呢?
即B表中的1-10号的商家编号更新成cd0001,11-20号的商家编号更新成cd0002.....
set 商家编号 = 表A.商家编号
from 表A
where 表B.卡号 >= 表A.号段起 and 表B.卡号 <= 表A.号段终
俺测试完全可以:-------------------------------------
测试:use tempdb
GOCREATE TABLE #表A(商家编号 nvarchar(10), 号段起 int, 号段终 int)
GOCREATE TABLE #表B(卡号 int, 商家编号 nvarchar(10))
GOINSERT INTO #表A VALUES('cd0001',1,10)
INSERT INTO #表A VALUES('cd0002',11,20)
INSERT INTO #表A VALUES('cd0003',21,30)
GOINSERT INTO #表B VALUES(1,NULL)
INSERT INTO #表B VALUES(2,NULL)
INSERT INTO #表B VALUES(3,NULL)
INSERT INTO #表B VALUES(4,NULL)
INSERT INTO #表B VALUES(5,NULL)
INSERT INTO #表B VALUES(6,NULL)
INSERT INTO #表B VALUES(7,NULL)
INSERT INTO #表B VALUES(8,NULL)
INSERT INTO #表B VALUES(9,NULL)
INSERT INTO #表B VALUES(10,NULL)
INSERT INTO #表B VALUES(11,NULL)
INSERT INTO #表B VALUES(12,NULL)
INSERT INTO #表B VALUES(13,NULL)
INSERT INTO #表B VALUES(14,NULL)
GO update #表B
set 商家编号 = #表A.商家编号
from #表A
where #表B.卡号 >= #表A.号段起 and #表B.卡号 <= #表A.号段终
GOSELECT * FROM #表B
GODROP TABLE #表A
GODROP TABLE #表B
GO------------------------------------------------------
结果:卡号 商家编号
1 cd0001
2 cd0001
3 cd0001
4 cd0001
5 cd0001
6 cd0001
7 cd0001
8 cd0001
9 cd0001
10 cd0001
11 cd0002
12 cd0002
13 cd0002
14 cd0002