Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SQL:Zwróć tylko rekordy bez żadnych skojarzeń, które spełniają kryteria

Najprostszym sposobem jest not exists lub 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 przechowuje wszystkie rekordy w użytkownikach i wszelkie rekordy w addresses które pasują do on warunki. W tym przypadku (ponieważ nazwa miasta jest w on warunek), zwraca wszystkich użytkowników z informacją o miastach lub NULL wartości. where klauzula wybiera NULL wartości -- te niepasujące.

Odpowiednik not exists może być łatwiejszy do naśladowania:

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. Java PreparedStatement i ON DUPLICATE KEY UPDATE:skąd mam wiedzieć, czy wiersz został wstawiony lub zaktualizowany?

  2. aplikacja java, wątek zawiesza się po zabiciu połączenia MySQL

  3. MySQL - CONCAT dwa pola i użyj ich w klauzuli WHERE

  4. Czy można zmienić tabelę w mySql za pomocą procedur składowanych?

  5. Używasz zmiennej sesji PHP w pliku MySQL uruchamianym w PHP?