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

Zaznaczanie wszystkich elementów w jednej tabeli i łączenie z inną tabelą, pozwalając na wartości null

musisz użyć left join zamiast right join

Różne połączenia

inner join :zachowaj tylko te wiersze, w których znajdują się dane w obu tabelach

left join :zachowaj wszystkie wiersze z lewej tabeli i dodaj to, co jest możliwe z prawej

right join :zachowaj wszystkie wiersze prawej tabeli i dodaj to, co jest możliwe z lewej

Lewy stół to zawsze ten, który już mamy, a prawy to ten, z którym się łączymy.

Dla przypomnienia istnieje również cross join który łączy każdy wiersz w lewej tabeli z każdym wierszem w prawej tabeli, ale ten nie jest często używany.

Mam nadzieję, że teraz wszystko jest dla Ciebie jaśniejsze :)

Poprawione zapytanie

select  bird_name, member_id 
from birds  
left join bird_likes on birds.bird_id = bird_likes.bird_id 
where member_id = 2;

Należy pamiętać, że zakłada się, że kolumna member_id jest w tabeli ptaków, w przeciwnym razie możesz zachować ten warunek:

select  bird_name, member_id 
from birds  
left join bird_likes on 
    birds.bird_id = bird_likes.bird_id and
    bird_likes.member_id = 2;


  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 UPDATE dołącza dane do kolumny

  2. Jak iterować po obiekcie Yii CActiveDataProvider?

  3. Funkcja MySQL ACOS() — zwraca cosinus łuku liczby

  4. Wypełnić JFreechart TimeSeriesCollection z Mysql DB?

  5. MySQL:Wstaw datetime do innego pola datetime