Denne opplæringen vil vise deg hvordan du bruker MySQL-selvsamlingen til å slå sammen et bord med seg selv og lage tilpassede data.
Grunnleggende bruk
MySQL self-join bruker tabellaliaser for å sikre at du ikke gjentar den samme tabellen mer enn én gang i en setning.
MERK: Hvis du ikke er kjent med tabellaliaser, bør du vurdere vår andre opplæring som forklarer konseptet fullt ut.
Den generelle syntaksen for bruk av en selv-sammenføyning er lik den når man kombinerer to tabeller. Vi bruker imidlertid tabellaliaser. Vurder spørringen vist nedenfor:
PLUKKE UT alias1.cols,alias2.cols FRA tbl1 alias1,tbl2 alias2 HVOR [tilstand]
Eksempel på brukstilfeller
La oss bruke eksempler for å forstå hvordan du utfører MySQL -selvoppføringer. Anta at du har en database med følgende informasjon (Se full forespørsel nedenfor)
MISTE SCHEMA HVIS FINNES selv-;SKAPE SCHEMA selv-;
BRUK selv-;
SKAPE BORD brukere(
id INT PRIMÆRNØKKEL AUTO_INCREMENT ,
fornavn VARCHAR (255),
e -post VARCHAR (255),
payment_id INT ,
abonnement INT
);
SETT INN INN I brukere(fornavn,e -post,payment_id,abonnement) VERDIER ('Valerie G. Phillip', '[e -postbeskyttet]', 10001, 1), ('Sean R. Stories', '[e -postbeskyttet]', 10005, 2), ('Bobby S. Newsome', '[e -postbeskyttet]', 100010, 5);
Vi starter med en INNER -sammenføyning og til slutt en venstre -sammenføyning.
Self Join ved hjelp av Inner Join
Spørringen nedenfor utfører en INNER -sammenføyning på tabellen som er opprettet ovenfor.
PLUKKE UT al1.* FRA brukere al1 INDRE BLI MED brukere al2 PÅ al1.abonnement=al2. abonnement REKKEFØLGE ETTER id DESC ;Utgangen er vist nedenfor:
Self Join ved hjelp av Left Join
Eksempelforespørselen nedenfor forklarer hvordan vi kan bruke selvsamling med venstresamling.
PLUKKE UT ( CONCAT (al1.first_name, '->',al2.post)) SOM detaljer,al1.payment_id FRA brukere al1 VENSTRE BLI MED brukere al2 PÅ al1.id=al2.id;Utgangsresultatet er nedenfor:
Konklusjon
Denne guiden ledet deg gjennom hvordan du kan bruke MySQL self join til å bli med et bord med seg selv.
Takk for at du leser.