这个有点数学性质的问题了。 假定坐标(x1,y1), (x2,y2) a = min(x1,x2) b= min(y1,y2) c = max(x1,x2) d= max(y1,y2)select * from tb where (not ((minX > c) or (maxX < a))) and (not ((minY > d) or (maxY < b)))
...where x1 between minX and maxX and x2 between minX and maxX and y1 between minY and maxY and y2 between minY and maxY
这个有点像数学里的求范围值了,你画个坐标轴苗一苗就明白了! 有两种情况:1、X 比最小的 无限大,Y 在范围内。 2、Y 比最小的 无限大,X 在范围内。...where (minX < X and Y between minY and maxY) or (minY < Y and X between minX and maxX)
假定坐标(x1,y1), (x2,y2)
a = min(x1,x2)
b= min(y1,y2)
c = max(x1,x2)
d= max(y1,y2)select * from tb
where (not ((minX > c) or (maxX < a)))
and (not ((minY > d) or (maxY < b)))
and y1 between minY and maxY and y2 between minY and maxY
这个有点像数学里的求范围值了,你画个坐标轴苗一苗就明白了!
有两种情况:1、X 比最小的 无限大,Y 在范围内。
2、Y 比最小的 无限大,X 在范围内。...where (minX < X and Y between minY and maxY)
or (minY < Y and X between minX and maxX)
所以你知道考虑
minX,maxX和@minX,@maxX有交集,并且minY,maxY和@minY,@maxY有交集,就可以了。
这样问题就变的简单了。