我使用的SQL server 2008 目前有两个表 两表示意图如下:
其中第一个表的数据量在5.4w,第二个表的数据量则在11w左右。两表中的lat和lng,即经纬度字段存在大量相同数据。
我想要将第一个表中的tag数值赋予给两表经纬度相同的第二个表 但无奈两表直接内连接会有81w条数据,面对大量重合数据无从下手。所以小弟就像问一下,有没有其他办法可以把第一个表中的tag按照lat和lng双字段匹配到第二个表的tag上。 急用,求救 谢谢!
我使用的SQL server 2008 目前有两个表 两表示意图如下:
其中第一个表的数据量在5.4w,第二个表的数据量则在11w左右。两表中的lat和lng,即经纬度字段存在大量相同数据。
我想要将第一个表中的tag数值赋予给两表经纬度相同的第二个表 但无奈两表直接内连接会有81w条数据,面对大量重合数据无从下手。所以小弟就像问一下,有没有其他办法可以把第一个表中的tag按照lat和lng双字段匹配到第二个表的tag上。 急用,求救 谢谢!
DECLARE @lat2 varchar(100),@lng2 varchar(100),@tag1 int,@mid varchar(100),@oid varchar(100),@table2Count int,@i int
set @i=0
DECLARE cursor_name CURSOR FOR --定义游标
SELECT mid,oid,lat,lng FROM table2
OPEN cursor_name --打开游标
FETCH NEXT FROM cursor_name INTO @mid,@oid,@lat2,@lng2 --抓取下一行游标数据
select @table2Count=count(*) from table2
WHILE @i<@table2Count
BEGIN
select top 1 @tag1 from table1 where lat=@lat2 and lng=@lng2
update table2 set tag=@tag1 where mid=@mid and oid=@oid
FETCH NEXT FROM cursor_name INTO @mid,@oid,@lat,@lng
set @i=@i+1
END
CLOSE cursor_name --关闭游标
DEALLOCATE cursor_name --释放游标
用游标循环试试, select top 1 @tag1 from table1 where lat=@lat2 and lng=@lng2这一句的时候最好判断一下@tag1是否赋值了。