Sql查询获取您附近的前50个人

时间:2014-08-16 12:40:14

标签: sql sql-server

我的用户拥有纬度和经度。 我想根据我的位置得到前50个人。

例如

CREATE procedure [dbo].[GetProfilesNearBy]
@UserID int, 
@UserLat float, 
@UserLong float

AS 
BEGIN
   SELECT TOP 50 * from Users .... 
END 
GO

其中@ UserID,@ UserLat和@Userlong是发送请求的用户 UserLat例如是31.97542,UserLong例如是35.911285

如何获得最接近的50?

2 个答案:

答案 0 :(得分:3)

如果您正在使用SQL Server 2008或更高版本,则可以使用地理数据类型使其更加轻松:

示例:

DECLARE @user geography = 'POINT(31.97542 35.911285)'
SELECT TOP 50 FROM Users ORDER BY @user.STDistance(Position)

答案 1 :(得分:0)

试试这个

SELECT top 50 * 
FROM TableName 
where ColumnName >= Position