Mysql
 sql >> база данни >  >> RDS >> Mysql

SQL:Връща само записи без никакви асоциации, които отговарят на критериите

Най-простият начин е с not exists или 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;

left join съхранява всички записи в потребители и всички записи в addresses които съответстват на on условия. В този случай (тъй като името на града е в on условие), той връща всички потребители или с информация за градовете, или с NULL стойности. where клаузата избира NULL стойности -- несъвпадащите.

Еквивалентният not exists може да е по-лесно за следване:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Има ли текстово базиран потребителски интерфейс на mysql?

  2. Сравняване на периоди от време

  3. Как да обединя всички SQL-SQLite заявки по казус?

  4. Вземете дати между две дати

  5. Ръководство за проектиране на база данни за система за управление на инвентара в MySQL