sql >> Databasteknik >  >> RDS >> Mysql

SQL:Returnerar endast poster utan några associationer som uppfyller kriterierna

Det enklaste sättet är med finns inte eller vänster gå med :

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

vänster anslutning behåller alla register i användare och alla poster i adresser som matchar on betingelser. I det här fallet (eftersom stadsnamnet finns i on). skick), returnerar den alla användare med antingen information om städerna eller NULL värden. var satsen väljer NULL värden -- de som inte matchar.

Motsvarigheten finns inte kan vara lättare att följa:

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



  1. SQL Server 2012 kolumnidentitetsökning hoppar från 6 till 1000+ på 7:e posten

  2. BLOB/TEXT kolumnen "värde" används i nyckelspecifikation utan nyckellängd

  3. Hur lagrar man dubbelriktade relationer i ett RDBMS som MySQL?

  4. Hur infogar man en post eller UPPDATERING om den redan finns?