Pravděpodobně byste měli reprezentovat země/města jako polygony v DB a poté použít funkce pro protnutí polygonů ve stylu OpenGIS.
Ale , MySQL ne správně implementovat polygonový průsečík (pouze MBR - Minimum Bounding Rectangle). Takže tento přístup, i když je teoreticky správný, vám s MySQL prostě nebude fungovat. Možná budete chtít zvážit přechod na Postgres.
Co můžete udělat, je využít možnosti průniku MBR vaší DB a doplnit je svým vlastním kódem, který protíná polygon/bod (můžete najít knihovny, které to dělají).