一条一条的取数据然后再处理
---step1:匹配情况表,[终端序列号]长度不变 UPDATE b SET b.[厂商]=a.[厂商],b.[设备型号]=a.[设备型号] FROM zhouyx.dbo.账面库存 a INNER JOIN zhouyx.dbo.实物库存_1 b ON a.终端序列号=b.终端序列号 ---step2:匹配情况表,[终端序列号]长度改变(用到游标) DECLARE @序列号长度 int DECLARE order_cursor cursor --定义游标 for (SELECT LEN(终端序列号) 序列号长度 FROM zhouyx.dbo.实物库存 GROUP BY LEN(终端序列号) ) --为游标赋值一个数据集 open order_cursor --打开游标 fetch next from order_cursor into @序列号长度 --开始循环游标变量(从数据集中拿出第一条数据) while @@FETCH_STATUS = 0 --返回被 FETCH语句执行的最后游标的状态 (固定写法) begin UPDATE b SET b.[厂商]=a.[厂商],b.[设备型号]=a.[设备型号] FROM zhouyx.dbo.账面库存 a,zhouyx.dbo.实物库存_1 b WHERE b.[厂商] IS NULL AND RIGHT(a.终端序列号, @序列号长度)=b.终端序列号 fetch next from order_cursor into @序列号长度 --转到下一个游标(取下条数据集) end close order_cursor -- 关闭游标 deallocate order_cursor -- 释放游标