qq_24949293 2019-05-20 21:52 采纳率: 50%
浏览 3907
已结题

如何匹配匹配两个表的相同字段来为其中一个表的列赋值

我使用的SQL server 2008 目前有两个表 两表示意图如下:

图片说明

图片说明

其中第一个表的数据量在5.4w,第二个表的数据量则在11w左右。两表中的lat和lng,即经纬度字段存在大量相同数据。

我想要将第一个表中的tag数值赋予给两表经纬度相同的第二个表 但无奈两表直接内连接会有81w条数据,面对大量重合数据无从下手。所以小弟就像问一下,有没有其他办法可以把第一个表中的tag按照lat和lng双字段匹配到第二个表的tag上。 急用,求救 谢谢!

  • 写回答

3条回答

  • qq_34913422 2019-05-21 01:30
    关注

    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是否赋值了。

    评论

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办