函数返回值作既作为条件又作为列显示,怎么样写SQL?

MySql 码拜 8年前 (2016-02-16) 907次浏览
假设Distance(lng1,lat1,lng2,lat2)函数是计算两坐标之间的距离。
现在一直其中一点(lng0,lat0),表里每条记录存储了一组坐标,现在要查询距离小于100米的全部记录?
select id,Distance(lng0,lat0,lng,lat) from table where Distance(lng0,lat0,lng,lat) < 100
lng和lat是表中的字段,这样写是正确的,但是会执行两次运算,影响性能,有什么办法只只算一次,又能达到这个效果?
感谢!
解决方案

40

select * from (
select id,Distance(lng0,lat0,lng,lat) a from table
)A
where A.a<100
这样?

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明函数返回值作既作为条件又作为列显示,怎么样写SQL?
喜欢 (0)
[1034331897@qq.com]
分享 (0)