Når du skal bruke MySQL Self Join og eksempler

When Use Mysql Self Join



MySQL Self-Join er en type SQL Join som lar deg koble til et bord for seg selv. Det fungerer ved å bruke andre sammenføyningstyper, for eksempel indre eller venstre skjøteklausul, for å kombinere rader basert på betingelsene som er angitt.

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 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 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.