日期:2014-05-18  浏览次数:20375 次

取最接近的一条记录
表有3列
坐标X 坐标Y 记录
1.1 2.3 xxxx
................


这些坐标有的连续 有的不连续

现在给出 坐标 90.45 20.22

如果有这个坐标那么就返回这条记录 如果没有就返回最接近的坐标的记录

请问怎么写这条语句

(PS:这个表有980w条记录)

------解决方案--------------------
SQL code
select top 1 *
from tb
order by abs(90.45-[坐标X])+abs(20.22-[坐标Y])

------解决方案--------------------
SQL code

select top 1 *
from tab
order by
sqrt(power(坐标X-90.5,2)+power(坐标Y-20.22,2))

------解决方案--------------------
SQL code
select top 1 * from tb 
order by ((x - 90.45 )*(x - 90.45 ) + (y - 20.22)*(y - 20.22))