2017-01-09 6 views
1

Я хранения данных геометрии в базе данных MySQLРасстояние между двумя точечными значениями в MySQL в цикле

-------------------------------------------------- 
| ID | SPATIAL_INDEX | COORDS   | DISTANCE | 
| 1 | ...   | POINT(0.5,0.5) |  0  | 
| 2 | ...   | POINT(0.7,0.7) |  ?  | 
--------------------------------------------------- 

В Coords приходят из 2D-декартовой системы слежения. Как я могу заполнить столбец DISTANCE расстоянием между коордами ряда и последней строкой?

Row 1: Distance = 0; 
Row 2: Distance = Distance between coords of row 1 and row 2 
Row 3: Distance = Distance between coords of row 2 and row 3 
[...] 
+2

Предполагая, что у вас есть все строки, вставленные в таблицу в первую очередь, и теперь вам нужно заполнить расстояния, которые вы можете использовать для инструкции UPDATE, которая является самосоединением – Kickstart

ответ

2

SQL имеет специальную пространственную функцию для вычисления расстояния между двумя точками. вы можете использовать это, а также присоединиться к таблице, чтобы достичь того, чего вы хотите.

UPDATE tablename AS a 
LEFT JOIN tablename AS b 
ON b.id = a.id-1 
SET a.distance = IFNULL(DISTANCE(a.coord,b.coord),0); 

 Смежные вопросы

  • Нет связанных вопросов^_^