If I understand this right, you don't need a subquery, just a self-join:
SELECT main.id, main.name, related.id, related.name
FROM yourtable AS main
INNER JOIN yourtable AS related ON
(main.id <> related.id) AND (main.low >= related.low) AND (main.high <= related.high)
The main.id <> related.id
bit will keep a city from matching itself.