经典sql

本文介绍了如何在SQL查询中使用ROW_NUMBER()函数进行分组并按指定条件去重,以及如何利用st_distance_sphere()函数计算地理位置之间的距离,以实现附近3公里内对象的筛选。
摘要由CSDN通过智能技术生成

查询根据某列去重后到所有字段

语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

row_number() : 从1开始,为每条分组记录返回一个数字

SELECT * FROM (
    SELECT *,ROW_NUMBER() OVER (PARTITION BY COLUMN1 ORDER BY COLUMN2 DESC) AS row_num FROM 表名
) AS sqlquery WHERE row_num = 1;

表示根据COLUMN1分组,在分组内部根据COLUMN2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

查询附近的人或物

主要使用函数 st_distance_sphere(),此函数是获取两个坐标直间的距离。

# 附近3公里内的
SELECT id,name,addr,lng,lat,TRUNCATE(st_distance_sphere(point(116.38,39.9),point(lng,lat)),2) as distance_m FROM clinics HAVING distance_m>0 and distance_m <3000;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值