查询根据某列去重后到所有字段
语法: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;