MySQL中的SQL Group By和Min

MySQL中的SQL Group By和Min,mysql,sql,group-by,min,Mysql,Sql,Group By,Min,我在MySQL数据库中有以下SQL: select code, distance from locations; 结果如下: CODE DISTANCE LOCATION 106 386.895834130068 New York, NY 80 2116.6747774121 Washington, DC 80 2117.61925131453 Alexandria, VA 106 2563.46708

我在MySQL数据库中有以下SQL:

select code, distance from locations;    
结果如下:

CODE    DISTANCE            LOCATION
106     386.895834130068    New York, NY
80      2116.6747774121     Washington, DC
80      2117.61925131453    Alexandria, VA
106     2563.46708627407    Charlotte, NC
106     2030.5845606766     Atalanta, GA
我只想得到一个代码和最近的距离。所以我想让它返回这个:

CODE    DISTANCE            LOCATION
106     386.895834130068    New York, NY
80      2116.6747774121     Washington, DC
我最初有这样的想法:

SELECT code, min(distance), location
GROUP BY code
HAVING distance > 0 
ORDER BY distance ASC
试试这个:

select L.* from (
    SELECT code, min(distance) as min_distance 
    from places
    GROUP BY code)a
join places L
on L.CODE=a.CODE
and L.DISTANCE=a.min_distance 

选择代码、距离、位置
从地点
按代码分组
距离大于0的
按距离订购ASC
限制1

真的重复了吗?选择代码、距离位置;显示了输出?@hussainnaghri,不知道你在说什么如果两个代码有完全相同的位置怎么办,因为我也需要所有代码?这会导致错误。您需要在group by子句中包含DISTINCE,这将提供不同的结果作用域这不起作用,您仍然可以获得由于group by而与最小距离不匹配的位置
select L.* from (
    SELECT code, min(distance) as min_distance 
    from places
    GROUP BY code)a
join places L
on L.CODE=a.CODE
and L.DISTANCE=a.min_distance