将first select语句的结果用于另一个并将结果存储到另一个表中

时间:2016-10-09 11:49:54

标签: mysql sql

经过大量阅读后,我编写了这3个sql语句,我想自动化并结合这3个sql语句。

select longitude,latitude from roadData;

SELECT geo_coordinates_latitude, geo_coordinates_longitude,
 ( 3959 * acos( cos( radians('-37.964637158') ) * cos( radians( geo_coordinates_latitude ) ) * 
 cos( radians( geo_coordinates_longitude ) - radians('144.408476215') ) + sin( radians('-37.964637158') ) *
 sin( radians( geo_coordinates_latitude ) ) ) ) AS distance 
 FROM tweetmelbourne HAVING distance < .1 ORDER BY distance LIMIT 0 , 20;

Insert into roadTweets(longitude,latitude) values(144.408476215,-37.964637158);

**

  

我基本上想要做的是从roadData中选择所有坐标   一个接一个,然后在20岁以内的tweetMelbourne中找到所有要点   它的里程数并将这些点插入另一个表格。

**

  

描述tweetmelbourne;

enter image description here

  

描述roadData;

enter image description here

2 个答案:

答案 0 :(得分:0)

我对此并不确定,所以请告诉我这是否有效:

Insert into roadTweets(longitude,latitude) values(SELECT geo_coordinates_latitude, geo_coordinates_longitude,
 ( 3959 * acos( cos( radians(SELECT latitude FROM roadData) ) * cos( radians( geo_coordinates_latitude ) ) * 
 cos( radians( geo_coordinates_longitude ) - radians(SELECT longitude FROM roadData) ) + sin( radians(latitude) ) *
 sin( radians( geo_coordinates_latitude ) ) ) ) AS distance 
FROM tweetmelbourne HAVING distance < .1 ORDER BY distance LIMIT 0 , 20);

答案 1 :(得分:0)

我想这应该是:

    select * from tweetmelbourne t, roadData r 
where distance(r.longitude,r.latitude,t.geo_coordinates_longitude,t.geo_coordinates_latitude) < 20;

用公式计算距离来实现距离函数或替换距离(r.longitude,r.latitude,t.geo_coordinates_longitude,t.geo_coordinates_latitude)。在oracle中,您可以使用包SDO_GEOMETRY。