【发布时间】:2014-06-28 09:09:57
【问题描述】:
更新:
Here is the demo 和当前结果基于 M Khalid Junaid 的回答。查询仍然没有输出我的预期结果。
我有一个非常简单的表格,这里是值。
id animal_id latitude longitude created_at
--------------------------------------------------------------------------
119 75 1.356203 103.828140 2014-04-30 15:00:04
118 75 1.296613 103.857079 2014-04-30 14:58:58
117 75 1.296613 103.857079 2014-04-30 14:58:20
116 75 1.296613 103.857079 2014-04-30 14:53:17
这是我的查询,如果 latitude、longitude 和 user_id 相同,我想进行 GROUP。
select p.id,p.animal_id,p.name,p.latitude,p.longitude,p.created_at from Photo p
where 5 >= (select count(*)
from Photo p2
where p2.animal_id = p.animal_id and
p2.id <= p.id
)
AND DATE(p.created_at) > DATE_SUB(NOW(),INTERVAL 13 DAY)
AND ( p.latitude BETWEEN 0.908862 AND 1.717581 ) AND ( p.longitude BETWEEN 103.584595 AND 104.098206 )
GROUP BY p.latitude,p.longitude,p.animal_id
ORDER BY p.created_at DESC;
当前结果 id = 116
id animal_id latitude longitude created_at
--------------------------------------------------------------------------
119 75 1.356203 103.828140 2014-04-30 15:00:04
116 75 1.296613 103.857079 2014-04-30 14:53:17
预期结果 id = 118
我想在分组 latitude,longitude,uer_id
时获得最近的结果id animal_id latitude longitude created_at
--------------------------------------------------------------------------
119 75 1.356203 103.828140 2014-04-30 15:00:04
118 75 1.296613 103.857079 2014-04-30 14:58:58
我尝试了几种方法,但都没有得到想要的结果。
【问题讨论】:
-
这是一个常见问题解答
-
...animal_id 是从哪里来的?!
-
animal_id 在同一个表中,所以不需要加入任何外部表。
-
数据集中没有animal_id。要么将其包含在数据集中,要么将其从查询中排除
-
糟糕!我的错。我已经更新了这个问题。 user_id 应该是 animal_id。请在此处查看sqlfiddle.com/#!2/7bd16/1