Пространственный запрос MySQL

#mysql #mysql-workbench #mysql-spatial

#mysql #mysql-workbench #mysql-пространственный

Вопрос:

У меня была обычная таблица. Теперь я добавил пространственный столбец

 ALTER TABLE roadData ADD pt POINT ;
  

и теперь моя таблица имеет нулевые значения :
введите описание изображения здесь

Теперь в руководстве по MySQL используется оператор insert:

 INSERT INTO geom VALUES (ST_GeomFromText('POINT(1 1)'));
  

но я хочу сделать это в уже существующей таблице, удалив нулевые значения и вставив точечные данные на основе широты и долготы в каждой строке. Нравится

 INSERT INTO pt VALUES (ST_GeomFromText('POINT(latitude longitude)'));
  

а также создайте пространственный индекс. Как я могу это сделать?

Ответ №1:

Это an UPDATE STATEMENT , а не an INSERT STATEMENT , попробуйте это:

 UPDATE geom t
SET t.pt = ST_GeomFromText(CONCAT('POINT(',t.longitude,t.latitude,')'))
  

Комментарии:

1. спасибо, саги, на самом деле ответ, который вы сказали для перекрестного соединения, занял много времени. итак, @bamar сказал использовать spatial, поэтому пытаюсь это сделать.

2. И ALTER TABLE geom ДОБАВЬТЕ ПРОСТРАНСТВЕННЫЙ ИНДЕКС (g); для создания индекса

3. Для пространственного индекса: ИЗМЕНИТЕ ТАБЛИЦУ roadData, ДОБАВЬТЕ ПРОСТРАНСТВЕННЫЙ ИНДЕКС (pt);

4. ИЛИ СОЗДАЙТЕ ПРОСТРАНСТВЕННЫЙ ИНДЕКС sp_index В roadData (pt);

5. Почему бы и нет SET t.pt = ST_Point(t.longitude, t.latitude) ? Давайте усложним ситуацию и потратим впустую много ресурсов 🙂