表t
code,ex,x,y //代码char(4),扩展码char(1),经度,纬度
1011,1,32.168400,118.010101
1011,2,32.168308,118.xxxxxx
2011,1,32.170000,118.xxxxxx
2011,2,32.170001,118.xxxxxx这是对于某些地点的定位,
同一个位置会有几个定位,相距较近,代码一样,扩展不同,
不同位置的代码不一样,相距较远类似这样的记录有若干条,
现在我想通过一条语句,
1、提取出同一代码,定位数据相差很大的,也就是说同一代码不在一起的
2、提取出不同代码,定位数据相差很近的,也就是不同代码反而靠在一起的,
判断是否在一起的精度为小数后3位或4位
code,ex,x,y //代码char(4),扩展码char(1),经度,纬度
1011,1,32.168400,118.010101
1011,2,32.168308,118.xxxxxx
2011,1,32.170000,118.xxxxxx
2011,2,32.170001,118.xxxxxx这是对于某些地点的定位,
同一个位置会有几个定位,相距较近,代码一样,扩展不同,
不同位置的代码不一样,相距较远类似这样的记录有若干条,
现在我想通过一条语句,
1、提取出同一代码,定位数据相差很大的,也就是说同一代码不在一起的
2、提取出不同代码,定位数据相差很近的,也就是不同代码反而靠在一起的,
判断是否在一起的精度为小数后3位或4位
select top 10 ab距离
from t a
left join t b on a.code=b.code and a.ex<b.ex
order by ab距离 desc2、
select top 10 ab距离
from t a
left join t b on a.code<>b.code
order by ab距离
这个情况难道不是自连接吗?
1》
select * from t a,t b where a.code=b.code and (abs(a.x-a.x)>*** or abs(a.y-b.y)>***)
code 相同 但是经度、纬度相差超过***
2》
select * from t a,t b where a.code<>b.code and (abs(a.x-a.x)<*** or abs(a.y-b.y)<***)
这个道理也是一样的
你看吧 至少我是这样想的 ,不知符合不符合
=
(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)