sql >> Database teknologi >  >> RDS >> Mysql

SQL:Returner kun poster uden nogen tilknytninger, der opfylder kriterierne

Den enkleste måde er med eksisterer ikke eller tilslut til venstre :

select u.*
from users u left join
     addresses a
     on a.username = u.username and
        a.city = 'Peoria'
where a.city is null;

Den venstre join opbevarer alle registreringer i brugere og eventuelle poster i adresser der matcher on betingelser. I dette tilfælde (fordi bynavnet er i on). betingelse), returnerer den alle brugere med enten information om byerne eller NULL værdier. hvor klausulen vælger NULL værdier -- de ikke-matchende.

Den tilsvarende findes ikke kan være lettere at følge:

select u.*
from users u 
where not exists (select 1
                  from addresses a
                  where a.username = u.username and
                        a.city = 'Peoria'
                 );



  1. PostgreSQL:kørende antal rækker for en forespørgsel 'efter minut'

  2. 2 måder at returnere ikke-numeriske værdier i SQLite

  3. Primær nøgle i SQL:Alt hvad du behøver at vide om primære nøgleoperationer

  4. MySQL dobbelt type sammenligning mislykkes