sql >> Databáze >  >> RDS >> Mysql

Výběr všech položek v jedné tabulce a spojení s jinou tabulkou, což umožňuje hodnoty null

musíte použít left join místo right join

Různá spojení

inner join :ponechat pouze řádky, kde jsou data v obou tabulkách

left join :ponechat všechny řádky levé tabulky a přidat, co je možné z pravého

right join :ponechat všechny řádky pravé tabulky a přidat to, co je možné z levého

Levý stůl je vždy stůl, který již máme, a pravý stůl je ten, ke kterému se připojujeme.

Pro pořádek je zde také cross join který spojuje každý řádek v levé tabulce s každým řádkem v pravé tabulce, ale tento se příliš často nepoužívá.

Doufám, že je vám to vše nyní jasnější :)

Opravený dotaz

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

Uvědomte si, že to předpokládá, že sloupec member_id je v ptačí tabulce, jinak stav můžete zachovat takto :

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. Jak získat záznamy za posledních 30 dní

  2. Dotaz MySQL ORDER BY určité hodnoty před ostatními

  3. Tabulka MySQL je označena jako havarovaná a poslední (automatická?) oprava selhala

  4. InnoDB:Nelze uzamknout chyba ./ibdata1:35