0

新しいGEOMETRY列を作成したばかりで、列との既存の値に基づいてp、テーブル内の既存のすべての行の値を入力する必要があります。platlng

問題:lat値とlng値を手動で入力したため、以下のクエリを使用して単一の列を更新するとうまく機能します。しかし、MySQLpでテーブル内のすべての行のcolを更新する場合、使用したクエリではcolに値が設定されませんp。サブクエリ(?)と関係があると思いますが、正しく動作させる方法がわかりません。ありがとう!

動作するクエリ

UPDATE listings 
SET p = GeomFromText('POINT(39.948177 -75.174324)') 
WHERE listing_id = '585221';

値を設定しないクエリ

WHEREテスト時にテーブル全体を破棄しないように句を追加しました。UPDATEテーブル内のすべての行に対して実際にクエリを実行したい

UPDATE listings 
SET p = GeomFromText('POINT(lat lng)') 
WHERE listing_id = '585221';
4

3 に答える 3

1

そしてこれはどうですか(geomfromtext関数を削除してください)

リストの更新SETp= POINT(lat、lng)WHERE Listing_id = '585221';

またはあなたはこのように行くことができます

リストの更新SETp= GeomFromText(CONCAT('POINT('、lat、''、lng、')'));

于 2012-04-06T13:29:25.047 に答える
0

次の適切な引数を形成するには、値を連結する必要がありますGeomFromText

UPDATE listings 
SET p = GeomFromText('POINT(' || lat || ' ' || lng || ')') 
WHERE listing_id = '585221';

パイプ演算子(||)は、文字列を連結するために使用されます。しかし、より良い解決策は、Point関数を直接使用することです。

UPDATE listings 
SET p = Point(lat, lng) 
WHERE listing_id = '585221';
于 2012-04-06T13:37:54.830 に答える
0

SQLite / Spatialiteの場合、

UPDATE mytable SET location = GeomFromText('POINT('||latitude||" "||longitude||')');
于 2014-08-21T22:11:32.137 に答える