Tento tutoriál vám ukáže, ako použiť vlastné spojenie MySQL na zlúčenie tabuľky so sebou a vytváranie prispôsobených údajov.
Základné použitie
MySQL self-join používa aliasy tabuliek, aby sa ubezpečil, že v jednom príkaze neopakujete rovnakú tabuľku viac ako raz.
POZNÁMKA: Ak nie ste oboznámení s aliasmi tabuliek, zvážte náš ďalší návod, ktorý tento koncept plne vysvetľuje.
Všeobecná syntax na používanie automatického spájania je podobná syntaxi pri kombinovaní dvoch tabuliek. Používame však aliasy tabuliek. Zvážte nasledujúci dotaz:
VYBERTE alias1.koly,alias2.koly OD tbl1 alias1,tbl2 alias2 KDE [podmienkou]
Príklad prípadov použitia
Použime príklady na pochopenie toho, ako vykonávať vlastné spojenia MySQL. Predpokladajme, že máte databázu s nasledujúcimi informáciami (celý dotaz nájdete nižšie)
POKLES SCHÉMA AK EXISTUJE seba;VYTVORIŤ SCHÉMA seba;
POUŽITIE seba;
VYTVORIŤ TABUĽKA používateľov(
id INT PRIMÁRNY KĽÚČ AUTOMATICKÝ PRÍRASTOK ,
krstné meno VARCHAR (255),
e -mail VARCHAR (255),
ID_platby INT ,
predplatné INT
);
VLOŽIŤ DO používateľov(krstné meno,e -mail,ID_platby,predplatné) HODNOTY („Valerie G. Phillip“, '[email protected]', 10001, 1), („Príbehy Sean R.“, '[email protected]', 10005, 2), ('Bobby S. Newsome', '[email protected]', 100010, 5);
Začneme VNÚTORNÝM spojením a nakoniec ľavým spojením.
Pripojte sa pomocou vnútorného spojenia
Nasledujúci dotaz vykoná VNÚTORNÉ spojenie v tabuľke vytvorenej vyššie.
VYBERTE al1.* OD užívatelia al1 VNÚTORNÉ PRIPOJTE SA užívatelia al2 ZAPNUTÉ al1.predplatné=al2.predplatné ZORADIŤ PODĽA id DESC ;Výstup je zobrazený nižšie:
Pripojte sa pomocou ľavého pripojenia
Nasledujúci príklad dotazu vysvetľuje, ako môžeme použiť automatické spojenie s ľavým spojením.
VYBERTE ( CONCAT (al1.prve_meno, '->',al2.email)) AS podrobnosti,al1.platba_id OD užívatelia al1 VĽAVO PRIPOJTE SA užívatelia al2 ZAPNUTÉ al1.id=al2.id;Výsledok výstupu je uvedený nižšie:
Záver
Táto príručka vás prevedie tým, ako môžete použiť funkciu MySQL self join na spojenie sa so samotnou tabuľkou.
Ďakujem za čítanie.