The solution proposed by Chris:
SELECT * AS distance FROM items ORDER BY ((location_lat-lat) * (location_lat-lat)) + ((location_lng - lng) * (location_lng - lng)) ASC
is correct when we are close to the equator. To work correctly in other latitudes, I suggest:
SELECT * AS distance FROM items ORDER BY ((location_lat-lat) * (location_lat-lat) * cos_lat_2 ) + ((location_lng - lng) * (location_lng - lng)) ASC
where we must pre-compose:
cos_lat_2 = cos(location_lat) ^ 2
PROBLEM:
If we are at the equator and we move one degree in longitude (east or west), we do this in a circle of 40,000 km, representing a distance of 40,000 / 360. If we move one degree in latitude (north or south), we do it in a circle intersecting both poles, which also includes a distance of 40,000 / 360 (given that the earth is a sphere).
But if we are in the south of England with a latitude of 50 °, and we move one degree in longitude (east or west), we do this on the 50th parallel, which has a smaller circle than the equator. The distance is perimeter_parallel_50 / 360. The calculation of this perimeter is simple: perimeter_parallel_50 = cos (50) * 2 * PI * EARHT_RADIUS = 0.64 * 40,000 km. This decrease in distance is not observed if we move one step south or north. The circle around which we move has a perimeter of 40,000 km.
DECISION:
Since location_lat is a value known in advance, we can pre-calculate the value of cos (location_lat) so that it can be used as a scaling factor, so the offset in longitude and latitude are equivalent. Moreover, we pre-square it so as not to double it.
Note:
This is still an approximation, and it will give incorrect results when moving long distances, especially near the poles and when crossing the 180th meridian.