2016-06-12 5 views
0

mysql 레코드에서 거리를 계산하려면 먼저 모든 좌표를 가져 와서 LineString 개체로 저장해야하지만 오류가 있습니다. 내 SQL에 무슨 문제가 있습니까?입력으로 mysql 하위 쿼리

WITH tmp AS 
    (SELECT GROUP_CONCAT(CONCAT_WS(' ',lat,lng) SEPARATOR ', ') FROM track WHERE vh_id='75' AND DATE(tdate)='2016-06-09' ORDER BY tdate) 
SELECT ST_Length(ST_GeomFromText(tmp)); 

답변

0

첫째, MySQL은 WITH 절을 지원하지 않습니다. 둘째, 10.4 User-Defined Variables과 같은 변수를 정의해야합니다. 당신은이에 SQL 변경할 수 있습니다

)

SELECT GROUP_CONCAT(CONCAT_WS(' ',lat,lng) SEPARATOR ', ') INTO @tmp 
FROM track 
WHERE vh_id='75' AND DATE(tdate)='2016-06-09' ORDER BY tdate; 
SELECT ST_Length(ST_GeomFromText(@tmp)); 

또는 하나 개의 쿼리 : ST_Length 함수는 아무 것도 발생하지 않도록

SELECT ST_Length(ST_GeomFromText(GROUP_CONCAT(CONCAT_WS(' ',lat,lng) SEPARATOR ', '))) 
FROM track 
WHERE vh_id='75' AND DATE(tdate)='2016-06-09' ORDER BY tdate; 
+0

좋은, 첫 번째 옵션 작동하지만, MySQL을 잘라 excedeec 문자열, .. 어떤 생각? 어떻게 mysql에서 길이 임시 변수를 설정? – binaryCode

+0

무엇을 의미합니까? 고정 된 길이의 문자열을 왼쪽 빈칸에 채우는 것과 같은 것을 원했습니까? – Blank