mysql使用sql语句根据经纬度计算距离排序

mysql使用sql语句根据经纬度计算距离排序,第1张

SELECT

*,

    ROUND( 

        6371.393 * 2 * ASIN( 

            SQRT( 

                POW( 

                    SIN( 

                        ( 

                            39.9109245473 * 3.1415926 / 180 - lat * PI() / 180 

                        ) / 2 

                    ), 

                    2 

                ) + COS(39.9109245473 * 3.1415926 / 180) * COS(lat * PI() / 180) * POW( 

                    SIN( 

                        ( 

                            116.41338369712 * 3.1415926 / 180 - lon * PI() / 180 

                        ) / 2 

                    ), 

                    2 

                ) 

            ) 

        ) * 1000 

    ) AS num 

FROM 

    bbs_self_tide_gangname 

ORDER BY 

    num ASC

那要看你的表是怎么构建的

一般这汇总情况我认为

你的id应该是自增的吧

如果是自增

那么

插入一个数据的话

就是id等于4的那个行

你的

desc字段应该就是

用来

排序用的吧

那么

在前台

你可以

做一个input框(每行后边都有个input框)

目的就是为了

排序你的数据

在这种情况下

就不需要改动什么字段了吧

唯一需要改动的字段内容

就是

更新

desc的字段就可以了吧

打个比方

原来是这样的

id

name

desc

1

a

0

2

c

3(改动)

3

b

2(改动)

4

d

1(追加在a后)

修改后

name

a

b

c

d

这么排列

id

name

desc

1

a

0

3

b

1

2

c

2

4

d

3

这是在前台显示的内容

在数据库里

你可以看到实际上

改变的

只有

desc

后边的

0

1

2

3

这几个

而数据库的表中

实际数据的位置是不会发生变化

其实你不用担心什么数据量过多的问题

在插入新的数据的时候

就让他的desc值默认是最大的

也就是最后一位显示


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8532664.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存