当我执行它时,我有以下sql查询显示零行我在其中有一个名为distance的值为null,当我执行此查询时,距离feild将填充一些数值但是如果我指定条件距离< 2或者距离< 10或...显示相同的结果我能知道什么是问题。
SELECT Id,Name1,ZipCode,StreetName,StreetNumber,State1,Lat,
Lng,Keyword,
( 6371 * ACOS( COS( (12.925432/57.2958) )
* COS( (Lat/57.2958) ) * COS( ( Lng/57.2958 ) - (77.5940171/57.2958) )
+ SIN( 12.925432/57.2958 ) * SIN( Lat/57.2958 ) ) ) AS distance
FROM Business_Details
where (
(StreetName like '%jayanagar%')
and (Keyword like '%plumbing%' )
and (distance<3)
)
ORDER BY distance;
答案 0 :(得分:2)
你之前得到的答案......
[How to use" HAVING "and "ORDER BY" clause in sql
你不能在where子句中引用字段距离,你必须使用:
( 6371 * ACOS( COS( (12.925432/57.2958) )
* COS( (Lat/57.2958) ) * COS( ( Lng/57.2958 ) - (77.5940171/57.2958) )
+ SIN( 12.925432/57.2958 ) * SIN( Lat/57.2958 ) ) ) < 3
答案 1 :(得分:0)
通过在sql中创建视图,可以成功执行此特定查询。 创建视图业务为SELECT Id,Name1,ZipCode,StreetName,StreetNumber,State1,Lat,Lng,Keyword,(6371 * ACOS(COS((12.925432 / 57.2958))* COS((Lat / 57.2958))* COS((Lng /57.2958) - (77.5940171 / 57.2958))+ SIN(12.925432 / 57.2958)* SIN(Lat / 57.2958)))AS距离Business_Details ORDER BY距离; 此特定视图包含距离字段的结果,然后我们可以查询视图业务以操纵输入的距离值的结果 select * from business where(distance&lt; 2);