-1

I have the following SQL in MySQL DB:

select code, distance from locations;    

The output is below:

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

I want to be able to just get a single code and the closest distance. So I want it to return this:

CODE    DISTANCE            LOCATION
106     386.895834130068    New York, NY
80      2116.6747774121     Washington, DC

I originally had something like this:

SELECT code, min(distance), location
GROUP BY code
HAVING distance > 0 
ORDER BY distance ASC
cdub
  • 24,555
  • 57
  • 174
  • 303

3 Answers3

0
  SELECT code, min(distance), location
GROUP BY code,location
  HAVING distance =min(distance)
ashwinsakthi
  • 1,856
  • 4
  • 27
  • 56
0

try this:

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 
Joe G Joseph
  • 23,518
  • 5
  • 56
  • 58
0

SELECT code, distance, location FROM locations GROUP BY code HAVING distance > 0
ORDER BY distance ASC LIMIT 1

Michelle B
  • 24
  • 1
  • nope this doesn't work, you can still get locations that don't match the min distance because of the group by – cdub Jul 27 '12 at 22:08