这是一个棘手的问题(或者我认为)。我有一个如下所示的存储过程:
SELECT DISTINCT...
当被调用时,它返回具有最接近给定纬度/经度的点的项目的ID,尽管这些细节可能并不重要。鉴于我现在的结果,我能够围绕WHERE IN
查询创建外部查询,该查询将获得具有那些给定id的所有项目,并基于项目id与其他几个表连接。我知道我可以使用window.open(url,"_system")
,但我放弃了ID的顺序(顺序很重要)。
在一个请求中执行此操作的任何SQL方法?我能想到的最佳选择是将这些ID存储在临时表中,然后根据project_id对其进行选择/连接。
答案 0 :(得分:0)
我认为您可以在外部查询中使用group by
和order by
执行您想要的操作:
SELECT project_id
FROM (SELECT project_id,
ROUND((6371 * ACOS(COS(RADIANS(_lat)) * COS(RADIANS(`lat`)) * COS(RADIANS(`long`) - RADIANS(_lng)) + SIN(RADIANS(_lat)) * SIN(RADIANS(`lat`)))), 2) AS distanc
FROM geodata
WHERE (`long` BETWEEN @lng_min AND @lng_max) AND
(`lat` BETWEEN @lat_min and @lat_max)
) gd
GROUP BY project_id
ORDER BY MIN(CAST(distance as DECIMAL(10,5))) ASC;