我有以下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

关于mysql - SQL Group By和min(MySQL),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11683712/

10-11 03:41