欢迎投稿

今日深度:

附近的人计算方法-----使用mysql脚本计算方法,

附近的人计算方法-----使用mysql脚本计算方法,-----mysql


附近的人计算方法
drop  function if exists getDistance;
DELIMITER $$  
CREATE DEFINER=`root`@`localhost` FUNCTION `getDistance`(
     lon1 float(10,7) 
    ,lat1 float(10,7)
    ,lon2 float(10,7) 
    ,lat2 float(10,7)
) RETURNS double
begin
    declare d double;
    declare radius int;
    set radius = 6378140; #假设地球为正球形,直径为6378140米
    set d = (2*ATAN2(SQRT(SIN((lat1-lat2)*PI()/180/2)   
        *SIN((lat1-lat2)*PI()/180/2)+   
        COS(lat2*PI()/180)*COS(lat1*PI()/180)   
        *SIN((lon1-lon2)*PI()/180/2)   
        *SIN((lon1-lon2)*PI()/180/2)),   
        SQRT(1-SIN((lat1-lat2)*PI()/180/2)   
        *SIN((lat1-lat2)*PI()/180/2)   
        +COS(lat2*PI()/180)*COS(lat1*PI()/180)   
        *SIN((lon1-lon2)*PI()/180/2)   
        *SIN((lon1-lon2)*PI()/180/2))))*radius;
    return d;
end
$$
DELIMITER ; 
select getDistance(116.3899,39.91578,116.3904,39.91576);


怎用mysql实现计算上下两条记录的差

方法挺多的,很多是采用排序直接对等连接,这样对于主键聚集索引比较快的。
----
我提供的不是排序对等 方式,而是大范围连接检索最小距离的方式。

SELECT
A.FID,A.Fnum,MIN(A.Fid-B.Fid) as 差值
FROM test.cte A
INNER JOIN test.cte B on(A.FID>B.FID)
GROUP BY A.FID,A.Fnum
ORDER BY A.Fid Desc

---
执行结果:
FID Fnum 差值
-------------------------
'9323', '10', '14'
'9309', '10', '1'
'9308', '10', '47'
'9261', '10', '31'
'9230', '10', '23'
'9207', '10', '16'
'9191', '10', '26'
'9165', '10', '14'
 

mysql命令行工具怎执行脚本文件?

第一种方法:
在命令行下(未连接数据库),输入 mysql -h localhost -u root -p123456 < F:\hello world\niuzi.sql (注意路径不用加引号的!!) 回车即可.
第二种方法:
在命令行下(已连接数据库,此时的提示符为 mysql> ),输入 source F:\hello world\niuzi.sql (注意路径不用加引号的) 或者 \. F:\hello world\niuzi.sql (注意路径不用加引号的) 回车即可
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/2689.html NewsArticle 附近的人计算方法-----使用mysql脚本计算方法,-----mysql 附近的人计算方法drop function if exists getDistance;DELIMITER $$ CREATE DEFINER=`root`@`localhost` FUNCTION `getDistance`( lon1 float(10,7) ,lat1 float(10,7) ,l...
相关文章
    暂无相关文章
评论暂时关闭