A web site I support executes a MySQL database query that looks like this:

```
SELECT 
   person_per.per_ID 
FROM 
   person_per 
LEFT JOIN 
   person_custom 
ON 
   person_custom.per_ID=person_per.per_ID 
where 
   (per_City='Cathedral City') or 
   (per_City='Cherry Valley') or 
   (per_City='Coachella') or 
   [...and so on for several dozen cities...];

```

The query is supposed to return the set of people who live in any of the specified list of cities. The query is ugly and verbose, but it works fine.

However, the new request is to modify the query so that it checks not only the person\_per.per\_City field but also the person\_custom.work\_City field as well, so that the query returns any one who either lives *or* works in any of the specified cities.

The naive way to do this would be to simply double the number of "or" clauses, like this:

```
SELECT 
  person_per.per_ID 
FROM 
  person_per 
LEFT JOIN 
  person_custom 
ON 
  person_custom.per_ID=person_per.per_ID 
where 
  (per_City='Cathedral City') or 
  (work_City='Cathedral City') or 
  (per_City='Coachella') or 
  (work_City='Coachella') or 
  [...and so on for several dozen cities...];

```

But I'd like to avoid doing it that way if possible, because the only thing worse then a 20-line SQL query containing the entire list of city-names is a 40-line SQL query containing the entire list of city-names *twice*. That query would be (even more) difficult to write and maintain.

So, is there a way to phrase this query-on-two-columns such that each city's name only appears once in the query? (I know I could create an SQL table of city names, but I'd rather not modify the applications' set of SQL tables if possible, so I'd prefer a solution that modifies only the SQL query itself)