Du går med i två tabeller i MySQL med hjälp av "Join" -sklausulen i ett uttalande från ett "Select". Det finns flera typer av sammanfogningar, var och en med något annorlunda beteende:
1. `Inner Join '(vanligast):
Returnerar rader endast när det finns en match i båda tabellerna baserat på kopplingsvillkoret. Om det inte finns någon match i någon av tabellen är raden utesluten från resultatet.
`` `SQL
Välj Column_Names
Från tabell1
Inre anslutning tabell2 på tabell1.column_name =tabell2.column_name;
`` `
* `Tabell1` och` tabell2`:tabellerna du vill gå med.
* `Column_Name`:Kolumnerna som används för att matcha rader mellan tabellerna. Dessa kolumner måste ha kompatibla datatyper.
Exempel:
Låt oss säga att du har två tabeller:
* `kunder`: `Customerid`,` name ', `city'
* `beställningar`: `OrderId`,` CustomerId`, `OrderDate ',` TotalAmount`
För att få kundnamn och beställningsinformation för alla beställningar:
`` `SQL
Välj Customer.Name, orders.orderid, orders.orderdate, orders.totalamount
Från kunder
Inre sammanfogningsorder på kunder.CustomerId =Orders.CustomerId;
`` `
Detta kommer bara att returnera kunder som har gjort beställningar och beställningar som tillhör befintliga kunder.
2. `Left Join '(eller` Left Outer Join'):
Returnerar alla rader från vänster tabell (`tabell1`), även om det inte finns någon match i höger tabell (` tabell2`). Om det inte finns någon matchning i rätt tabell kommer kolumnerna från rätt tabell att ha "noll" -värden.
`` `SQL
Välj Column_Names
Från tabell1
Vänster gå med tabell2 på tabell1.column_name =tabell2.column_name;
`` `
Exempel: För att få alla kunder och deras beställningar (inklusive kunder utan beställningar):
`` `SQL
Välj Customer.Name, orders.orderid, orders.orderdate, orders.totalamount
Från kunder
Vänster gå med på beställningar på CUWESS.CUSTOMERID =orders.CustomerId;
`` `
3. `Höger gå ihop '(eller` höger yttre sammanfogning):
Returnerar alla rader från höger tabell (`tabell2`), även om det inte finns någon match i vänster tabell (` tabell1`). Om det inte finns någon matchning i det vänstra bordet kommer kolumnerna från vänster bord att ha "noll" -värden.
`` `SQL
Välj Column_Names
Från tabell1
Höger gå med tabell2 på tabell1.column_name =tabell2.column_name;
`` `
Exempel: (Mindre vanligt, men användbart i specifika scenarier) Detta är funktionellt motsvarande en "vänsterfogning" med tabellerna som byts.
4. `Full yttre koppling ':
Returnerar alla rader från båda tabellerna. Om det finns en match, returneras motsvarande rad. Om det inte finns någon match i en tabell kommer kolumnerna från den andra tabellen att ha "noll" -värden. MySQL stöder inte direkt "full yttre koppling . Du måste simulera den med "Union" av "vänster gå ihop" och "höger gå ihop".
`` `SQL
Välj Column_Names
Från tabell1
Vänster gå med tabell2 på tabell1.column_name =tabell2.column_name
UNION
Välj Column_Names
Från tabell1
Höger gå med tabell2 på tabell1.column_name =tabell2.column_name;
`` `
Att välja rätt anslutning:
Valet av kopplingstyp beror på vilken information du behöver. "Inner Join" är det vanligaste valet, men "vänster anslutning" och "höger koppling" är avgörande när du behöver bevara alla rader från en av tabellerna. Simulera "full yttre sammanfogning" när du behöver alla rader från båda tabellerna. Kom ihåg att använda alias (`tabell1`,` tabell2`) för tydlighet och för att undvika tvetydighet när kolumnnamn är desamma i båda tabellerna.