表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.....

解决方案 »

  1.   

    update 表B
    set 商家编号 = 表A.商家编号
    from 表A
    where 表B.卡号 >= 表A.号段起 and 表B.卡号 <= 表A.号段终
      

  2.   

    你试过没?
    俺测试完全可以:-------------------------------------
    测试: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