Mysql删除重复使用group by?

时间:2012-06-07 07:31:44

标签: mysql sql group-by

嗨大家我目前有这张桌子

MEMBER

**ID Position Latitude Longitute**

1   1       1.38086  103.749 
1   2       1.38086  103.749 
1   3       1.38086  103.749    
1   4       1.48086  103.949 
1   5       1.48086  103.949    
1   6       1.48086  103.949 
1   7       1.58086  103.749    

我目前正在使用select * from meber group by latitude,longitute order by position desc

然而这将导致

**ID Position Latitude Longitute**
1   1       1.38086  103.749    
1   4       1.48086  103.949  
1   7       1.58086  103.749    

我希望结果显示最高位置而不是使用group by的最低位置。任何解决方案

3 个答案:

答案 0 :(得分:4)

您必须使用子查询来确定每个组的最大位置,然后将其与您的选择连接以获得所需的记录:

SELECT *
FROM   meber NATURAL JOIN (
  SELECT   latitude,longitute,MAX(position) AS position
  FROM     meber
  GROUP BY latitude,longitute
) AS t

顺便说一句,英文单词拼写为"经度"。

答案 1 :(得分:2)

select MAX(position) position,latitude,longitute
from meber
group by latitude,longitute

答案 2 :(得分:0)

子查询解决方案是最常见的解决方案。

我喜欢使用另一个,因为它不涉及子查询:

SELECT *
FROM member M
LEFT JOIN member N
    ON M.latitude = N.latitude
    AND M.longitute = N.longitute
    AND M.position < N.position
WHERE N.position IS NULL

请注意,为了获得最低位置,它就像写M.position&gt;一样简单。 N.position代替。