【发布时间】:2012-09-07 12:40:37
【问题描述】:
我有一张如下表:-
表:交易 +----+--------+---------+----------+------------+ |身份证 |姓名 |纬度 |经度|结束日期 | |----+--------+----------+----------+------------+ | 1 |比萨饼| 10.5 | -10.5 | 2012-12-12 | | 2 |比萨饼| 11.5 | -10.5 | 2012-12-12 | | 3 |果冻| 21.5 | -10.5 | 2012-12-12 | | 4 |果冻| 23.5 | -10.5 | 2012-12-12 | | 5 |百合 | 19.5 | -10.5 | 2012-12-12 | +----+--------+---------+----------+------------+我正在使用latitude 和longitude 来查找与该人的距离。但我需要基于name 的结果为DISTINCT。我还需要按我计算的距离对结果进行排序并应用限制 0,3。
我当前使用的查询是“-
SELECT *,
( 6371 * Acos(Cos(Radians(9.939625)) * Cos(Radians(lat)) * Cos(
Radians(lng) - Radians(76.259498)) +
Sin(Radians(9.939625)) * Sin(Radians(lat))) ) AS
distance
FROM deals
WHERE 1
AND end_date >= Now()
HAVING distance < 20000
ORDER BY id DESC,
distance
LIMIT 0, 3;
简而言之,我需要的是:-
- 最近的交易列表(按距离排序)
- 对
name应用 distinct(这样比萨饼和果冻都只会出现一次)
【问题讨论】:
-
在 2 个可用距离中,您需要距离最短的名称。对吗?
-
是的,正确的。需要先显示最近的。