sql >> Database >  >> RDS >> Mysql

SQL:alleen records retourneren zonder koppelingen die aan de criteria voldoen

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'
                 );



  1. Hoe volumes in docker-afbeelding ongedaan maken?

  2. Hoe te ontsnappen aan één citaat, speciale tekens in MySQL

  3. Hoe items recursief uit de tabel te verwijderen?

  4. Hoe een slaapstand-sjabloonquery te schrijven vanuit de sql-query?