MySQL中的SQL Group By和Min
我在MySQL数据库中有以下SQL: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
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