Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Alle Elemente in einer Tabelle auswählen und mit einer anderen Tabelle verknüpfen, wobei Nullen zulässig sind

Sie müssen left join verwenden statt right join

Die verschiedenen Joins

inner join :Nur die Zeilen behalten, in denen Daten in beiden Tabellen vorhanden sind

left join :Behalte alle Zeilen der linken Tabelle und füge hinzu, was aus der rechten möglich ist

right join :Behalte alle Zeilen der rechten Tabelle und füge hinzu, was von der linken möglich ist

Der linke Tisch ist immer der Tisch, den wir bereits haben, und der rechte Tisch ist der, dem wir beitreten.

Für die Aufzeichnung gibt es auch einen cross join die jede Zeile in der linken Tabelle mit jeder Zeile in der rechten Tabelle verbindet, aber diese wird nicht sehr oft verwendet.

Ich hoffe das alles ist dir jetzt klarer :)

Korrigierte Abfrage

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

Beachten Sie, dass davon ausgegangen wird, dass die Spalte member_id steht in der Vogeltabelle, ansonsten kannst du die Bedingung so beibehalten :

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;