    SELECT
        c.id_chave_cidade,
        c.nome_cidade,
        e.sigla_estado,
        (
            6371 * ACOS(
                COS(RADIANS(-23.5489)) * COS(RADIANS(c.latitude)) *
                COS(RADIANS(c.longitude) - RADIANS(-46.6388)) +
                SIN(RADIANS(-23.5489)) * SIN(RADIANS(c.latitude))
            )
        ) AS distancia_km,
        c.latitude,
        c.longitude
    FROM cidades c
    JOIN estados e ON c.id_estado = e.codigo_ibge
    WHERE 
       c.latitude BETWEEN (-23.5489 - (123 / 111)) AND (-23.5489 + (123 / 111))
        AND c.longitude BETWEEN (-46.6388 - (123 / (111 * COS(RADIANS(-23.5489)))))
                            AND (-46.6388 + (123 / (111 * COS(RADIANS(-23.5489)))))
    HAVING distancia_km <= 123
    ORDER BY distancia_km;

