sql >> Databasteknik >  >> RDS >> Mysql

Att markera alla objekt i en tabell och gå med i en annan tabell, vilket tillåter null

du måste använda left join istället för right join

De olika kopplingarna

inner join :behåll bara de rader där det finns data i båda tabellerna

left join :behåll alla rader i den vänstra tabellen och lägg till vad som är möjligt från den högra

right join :behåll alla rader i den högra tabellen och lägg till vad som är möjligt från den vänstra

Det vänstra bordet är alltid det bord vi redan har och det högra bordet är det vi går med i.

Det finns också en cross join som förenar varje rad i den vänstra tabellen med varje rad i den högra tabellen, men den här används inte särskilt ofta.

Jag hoppas att allt detta nu är tydligare för dig :)

Rättad fråga

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

Var medveten om att detta förutsätter att kolumnen member_id finns i fågeltabellen, annars kan du behålla skicket så här :

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. Få näst högsta lön för varje person i mysql

  2. Installera PostgreSQL på Ubuntu för Ruby on Rails

  3. Hur lägger jag till villkor i underordnade underordnade modeller i uppföljaren som bör påverka min överordnade modell i findAndCountAll?

  4. Förstå SQL Server Lockdown till säker databasmiljö