【问题标题】:Using result of first select statement into another and store result into another table使用第一个 select 语句的结果到另一个表中并将结果存储到另一个表中
【发布时间】:2017-02-17 23:44:14
【问题描述】:

经过大量阅读,我已经编写了这 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 中选择所有坐标 一个一个然后找到tweetMelbourne 20以内的所有点 英里,然后将这些点插入另一个表。

**

描述tweetmelbourne;

描述道路数据;

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    我想这应该是:

        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。

    【讨论】:

    • 错误代码:1054。“字段列表”中的“纬度”列未知
    • @kapcer 我已经包含了表格的描述
    • 请立即尝试。我已经编辑了答案。然而,计算距离的逻辑对我来说有点奇怪。你要计算多长的距离?
    • 我想我把你弄糊涂了。我已经更新了问题,如果你还不明白,请告诉我。
    • 所以看起来你只想对那些距离小于 20 的表过滤点进行交叉连接
    【解决方案2】:

    我对此不太确定,所以请让我知道这是否有效:

    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);
    

    【讨论】:

    • 错误代码:1064。您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以获取在 'SELECT geo_coordinates_latitude, geo_coordinates_longitude, ( 3959 * acos( cos(' at line 1) 附近使用的正确语法
    猜你喜欢
    • 2017-02-17
    • 2012-07-22
    • 2017-08-22
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多