SQL分组依据和最小值(MySQL)

我有以下SQL

select code, distance from places;

输出如下:

CODE    DISTANCE            LOCATION

106 386.895834130068 New York, NY

80 2116.6747774121 Washington, DC

80 2117.61925131453 Alexandria, VA

106 2563.46708627407 Charlotte, NC

我希望能够仅获取一个代码并获得最近的距离。所以我希望它返回这个:

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 a.code, a.distance

FROM places a

INNER JOIN

(

SELECT code, MIN(distance) AS mindistance

FROM places

GROUP BY code

) b ON a.code = b.code AND a.distance = b.mindistance

ORDER BY a.distance

以上是 SQL分组依据和最小值(MySQL) 的全部内容, 来源链接: utcz.com/qa/404798.html

回到顶部