0

site_id が同じ場合、異なるレコードから緯度と経度の位置を更新したいと思います。

たとえば、

ID | SiteID | Latitude | Longitude
1      5      74.4545   -35.5466
2      6      74.4545   -35.5466
3      5      75.4584   -45.5966
4      6      79.6545   -36.5496

レコード 3 と、SiteID 5 に一致する他のすべてのレコードに、レコード 1 の緯度と経度を取得してほしいと思います。同様に、レコード 2 と 4

mysqlでこれを行うにはどうすればよいですか。

4

2 に答える 2

2

最初に正しい値を見つけてから、更新を行う必要があります。正しい値は次のとおりです。

select t.*
from t join 
     (select siteId, min(id) as minId
      from t
      group by siteId
     ) ts
     t.id = minId

現在の問題は、クエリで同じテーブルを更新および参照できないことです。したがって、これを一時テーブルに入れますmaster

これらはマスターレコードです。次のように更新できます。

update t
    join master
    on t.id = master.id
    set t.latitude = master.latitude,
        t.longitude = master.longitude
于 2012-10-05T21:14:33.283 に答える
1

テーブルの名前に site_table を使用します。

UPDATE site_table TARG, site_table VALDATA
SET TARG.Latitude = VALDATA.Latitude, TARG.Longitude = VALDATA.Longitude

WHERE TARG.SiteId = VALDATA.SiteId
  AND VALDATA.id = (SELECT min(MINREC.id) FROM site_table MINREC
                    WHERE MINREC.SiteId = TARG.SiteId)
于 2012-10-05T21:12:45.560 に答える