Wahrscheinlich sollten Sie Länder/Städte als Polygone in der Datenbank darstellen und dann Polygonschnittfunktionen im OpenGIS-Stil verwenden, um sich zu schneiden.
Aber , MySQL nicht Polygonschnitt richtig implementieren (nur MBR - Minimum Bounding Rectangle). Dieser Ansatz ist also zwar theoretisch richtig, funktioniert aber bei MySQL einfach nicht. Vielleicht möchten Sie in Betracht ziehen, zu Postgres zu wechseln.
Was Sie tun können, ist, die MBR-Schnittfunktionen Ihrer DB zu verwenden und sie mit Ihrem eigenen Code zu ergänzen, der Polygon-/Punktschnitte durchführt (Sie können Bibliotheken finden, die dies tun).