Вероятно трябва да представите държави/градове като полигони в DB и след това да използвате функции за пресичане на многоъгълници в стил OpenGIS, за да се пресичат.
Но , MySQLне приложете правилно пресичането на многоъгълници (само MBR - минимален ограничаващ правоъгълник). Така че този подход, макар и правилен на теория, просто няма да работи за вас с MySQL. Може да помислите за преминаване към Postgres.
Това, което можете да направите, е да използвате възможностите за пресичане на MBR на вашата DB и да ги допълните със свой собствен код, който прави пресичане на многоъгълници/точка (можете да намерите библиотеки, които правят това).