求教一个例子.一个数据库,内有两张表,第一张表的内容根据第二张表进行修改!

解决方案 »

  1.   

    create table #tmpa(
    点 decimal(10,0)
    ,名称 varchar(50)
    ,经度 decimal(10,4)
    ,纬度 decimal(10,4)
    ,烈度 decimal(10,0)
    )
    create table #tmpb(
    点 decimal(10,0)
    ,经度 decimal(10,4)
    ,纬度 decimal(10,4)
    ,烈度 decimal(10,0)
    )
    insert into #tmpa(点,名称,经度,纬度) values(2,'东引',120.4,26.3681)
    insert into #tmpa(点,名称,经度,纬度) values(3,'文明村',120.003,26.6541)
    insert into #tmpa(点,名称,经度,纬度) values(4,'里村',120.0685,26.6523)
    insert into #tmpa(点,名称,经度,纬度) values(5,'外村',120.079,26.6509)
    insert into #tmpa(点,名称,经度,纬度) values(6,'闾村',120.1015,26.6546)
    insert into #tmpa(点,名称,经度,纬度) values(7,'沙村',120.0653,26.6442)
    insert into #tmpa(点,名称,经度,纬度) values(8,'金村',120.0159,26.6156)
    insert into #tmpa(点,名称,经度,纬度) values(9,'延亭村',120.0317,26.6246)
    insert into #tmpa(点,名称,经度,纬度) values(10,'留村',120.0074,26.6104)
    insert into #tmpa(点,名称,经度,纬度) values(11,'澳村',120.1398,26.5917)
    insert into #tmpa(点,名称,经度,纬度) values(12,'澳村',120.1444,26.5785)
    insert into #tmpa(点,名称,经度,纬度) values(13,'竹村',120.0879,26.6418)
    insert into #tmpa(点,名称,经度,纬度) values(14,'西村',120.0388,26.5042)
    insert into #tmpa(点,名称,经度,纬度) values(15,'宫村',120.0526,26.5093)
    insert into #tmpa(点,名称,经度,纬度) values(16,'烟台村',120.0422,26.512)
    insert into #tmpa(点,名称,经度,纬度) values(17,'小村',120.1001,26.669)
    insert into #tmpa(点,名称,经度,纬度) values(18,'米村',120.1339,26.7167)
    insert into #tmpa(点,名称,经度,纬度) values(19,'蛛网村',120.1142,26.7169)
    insert into #tmpa(点,名称,经度,纬度) values(20,'华村',120.0599,26.6749)--select * from #tmpa
    insert into #tmpb(点,经度,纬度,烈度) values(1,118.371,28.25,1)
    insert into #tmpb(点,经度,纬度,烈度) values(2,118.421,28.25,1) 
    insert into #tmpb(点,经度,纬度,烈度) values(3,118.471,28.25,1) 
    insert into #tmpb(点,经度,纬度,烈度) values(4,118.521,28.25,1) 
    insert into #tmpb(点,经度,纬度,烈度) values(5,118.571,28.25,1) 
    insert into #tmpb(点,经度,纬度,烈度) values(6,118.621,28.25,1) 
    insert into #tmpb(点,经度,纬度,烈度) values(7,118.671,28.25,1) 
    insert into #tmpb(点,经度,纬度,烈度) values(8,118.721,28.25,1) 
    insert into #tmpb(点,经度,纬度,烈度) values(9,118.771,28.25,1) 
    insert into #tmpb(点,经度,纬度,烈度) values(10,118.371,28.2,1)
    insert into #tmpb(点,经度,纬度,烈度) values(11,118.421,28.2,3)
    insert into #tmpb(点,经度,纬度,烈度) values(12,118.471,28.2,1)
    insert into #tmpb(点,经度,纬度,烈度) values(13,118.521,28.2,3)
    insert into #tmpb(点,经度,纬度,烈度) values(14,118.571,28.2,1)
    insert into #tmpb(点,经度,纬度,烈度) values(15,118.621,28.2,1)
    insert into #tmpb(点,经度,纬度,烈度) values(16,118.671,28.2,4)
    insert into #tmpb(点,经度,纬度,烈度) values(17,118.721,28.2,1)
    insert into #tmpb(点,经度,纬度,烈度) values(18,118.771,28.2,1)
    insert into #tmpb(点,经度,纬度,烈度) values(19,118.371,28.15,1)
    insert into #tmpb(点,经度,纬度,烈度) values(20,118.421,28.15,6)
    insert into #tmpb(点,经度,纬度,烈度) values(21,118.471,28.15,1)
    insert into #tmpb(点,经度,纬度,烈度) values(22,118.521,28.15,1)
    insert into #tmpb(点,经度,纬度,烈度) values(23,118.571,28.15,7)
    insert into #tmpb(点,经度,纬度,烈度) values(24,118.621,28.15,1)
    --增加此后三行可以看出效果,数据为#tmpa最后三行
    --insert into #tmpb(点,经度,纬度,烈度) values(25,120.0599,26.6749,111)
    --insert into #tmpb(点,经度,纬度,烈度) values(26,120.1142,26.7169,222)
    --insert into #tmpb(点,经度,纬度,烈度) values(26,120.1339,26.7167,333)
    --select * from #tmpbupdate #tmpa
    set 烈度=e.烈度
    --select e.*        --增加此行,注释掉上面两行可以看出对应#tmpb的哪个点
    from #tmpa c
    left outer join(select a.点,min(square(a.经度-b.经度)+square(a.纬度-b.纬度)) as 最小距离
    from #tmpa a,#tmpb b
    group by a.点) d on c.点=d.点
    left outer join (select a.点 as a点,b.点 as b点,b.烈度,square(a.经度-b.经度)+square(a.纬度-b.纬度) as 距离 from #tmpa a,#tmpb b) e
    on d.点=e.a点 and d.最小距离=e.距离select * from #tmpadrop table #tmpa
    drop table #tmpb