Vous devriez probablement représenter les pays/villes sous forme de polygones dans la base de données, puis utiliser les fonctions d'intersection de polygones de style OpenGIS pour les intersections.
Mais , MySQL ne le fait pas implémentez correctement l'intersection de polygones (uniquement MBR - Rectangle de délimitation minimum). Donc, cette approche, bien que correcte en théorie, ne fonctionnera tout simplement pas pour vous avec MySQL. Vous voudrez peut-être envisager de passer à Postgres.
Ce que vous pouvez faire, c'est utiliser les capacités d'intersection MBR de votre base de données et les compléter avec votre propre code qui effectue l'intersection polygone/point (vous pouvez trouver des bibliothèques qui le font).