Если городов конечное множество и они редко изменяются - вам поможет поле SET.
Если же нет - то можно использовать битовую арифметику (фактически тот же SET, но данные хранятся в другой таблице, а айди нужных городов кодируются в битовое слово), это немножко сложно, но очень эффективно.
Например у вас таблица
1. Москва
2. Петербург
3. Самара.
Человек выбрал самару и петербург.
Самара это 2 ^ 2, Петербург это 2 ^ 1, складываем, получаем число 5, которое в двоичном выражении записывается, как 110, а это значит (читаем его с конца), что первый элемент не задан, второй задан, третий задан, что вам и нужно. Для поиска по битовым маскам тоже есть операторы, XOR и другие.
Почитайте, это интересно, если хотите заморачиваться, но для списка городов, наверное, излишне.
Для них обычно создают таблицу связей, первая колонка - айди человека, вторая - айди города. И добавляете в неё несколько записей, чтобы отметить несколько городов, потом легко искать.