查找附近4个数,那么可以取小于该数的3个数,或者大于该数的3个数;看样子是小于10的优先取值
$arr1 = select * from tablename where val<10 orderby val desc limit(3)
$arr2 = select * from tablename where val>10 orderby val asc limit(3)
直接循环输出
foreach($i=0i<3i++){
$str[] = $arr1[i]
$str[] = $arr2[i]
}
到时候可以得到$str数组,剔除为0的数组,得到的$str 直接输出$str[0] $str[1] $str[2]
希望对你有所帮助~~
回答的有点晚,正好我做到相关的项目了,希望能帮到其他人.餐馆申请时候通过填写的地址取得经纬度存入数据库,下面是查询某个经纬度附近500米的
$user_lat='41.749034'//传过来的纬度
$user_lng='123.46017'//传过来的经度
$store_mod=db("store")//数据库
$storelist=$store_mod->query("SELECT
*,ROUND(6378.138*2*ASIN(SQRT(POW(SIN((".$user_lat."*PI()/180-【store_latitude】*PI()/180)/2),2)+COS(".$user_lat."*PI()/180)*COS(【store_latitude】*PI()/180)*POW(SIN((".$user_lng."*PI()/180-【store_longitude】*PI()/180)/2),2)))*1000)
AS distance FROM store HAVING 【搜索条件如 state=1】 distance<【周围距离多少米 如
500】 ORDER BY distance ASC")
var_dump($storelist)
【】sql语句中括号的store_latitude,store_longitude为你数据库存的商家经纬度的字段名,其余的为注释
查询id值在8附近的4条记录:SELECT ABS(id-8),* FROM article ORDER BY 1 LIMIT 4
原理,使用id与指定值之差的绝对值作为排序项目,能按照接近程度查询数据,使用LIMIT限制结果数量。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)