De eenvoudigste manier is met not exists of left join :
select u.*
from users u left join
addresses a
on a.username = u.username and
a.city = 'Peoria'
where a.city is null;
De left join bewaart alle records in gebruikers en alle records in addresses die overeenkomen met de on conditie. In dit geval (omdat de plaatsnaam in on staat) voorwaarde), retourneert het alle gebruikers met informatie over de steden of NULL waarden. De where clausule kiest de NULL waarden -- de niet-overeenkomende.
De equivalente not exists is misschien makkelijker te volgen:
select u.*
from users u
where not exists (select 1
from addresses a
where a.username = u.username and
a.city = 'Peoria'
);