我正在使用Postgres并自学SQL我有一个名为Zips的表,它包含数千行,它有2列纬度和经度。我有以下坐标(-122.406417,37.785834)并且我使用查询来查找最接近的匹配对但是我的查询出了问题,因为它没有产生正确的输出,这是我的查询
SELECT city,state,latitudes,longitudes, ABS(-122.406417-longitudes +
37.785834 - latitudes) as area FROM zips ORDER BY area limit 5
现在这是该查询的输出
这是错误的输出,因为第三行应该是第一行,例如注意它在绝对函数
中第三行:( - 122.406417 - -122.418)= .011583(37.7945-37.785834)= .008666总计= .202490
第一行:( - 122.406417 - -122.523)= .116583(37.9046-37.785834)= .008666总计= .235349
显然第三排旧金山低于第一排,我该如何解决?我是SQL新手但确实知道第三行的差异最小。任何建议都会很棒,这是Postgres 9.6
答案 0 :(得分:3)
我认为你的算术不正确:
open
和第3行类似,这与您得到的结果一致。我想要你想要的是
<script type="text/javascript">
var obj= @Html.Raw(Json.Encode(Model));
function dosomething(obj){}
</script>
或更准确地说,如果您想按距离排序:
area = ABS(-122.406417-longitudes + 37.785834 - latitudes)
Row 1: area = ABS(-122.406417- (-122.523) + 37.785834 - 37.9046)
= ABS(0.116583 + -0.118766)
= ABS(-0.002183)
= 0.002183