Mitä eroa on INNER JOIN
, LEFT JOIN
, RIGHT JOIN
ja FULL JOIN
välillä?
MySQL:ssä?
Tämän alkuperäisen artikkelin lukeminen The Code Projectissa auttaa sinua paljon: Visual Representation of SQL Joins.
Tutustu myös tähän viestiin: SQL SERVER - Parempi suorituskyky - LEFT JOIN vai NOT IN?.
Löydät alkuperäisen osoitteesta: JOINin ja OUTER JOINin ero MySQL:ssä.
INNER JOIN hakee kaikki tietueet, jotka ovat yhteisiä molemmille taulukoille annetun ON-lausekkeen perusteella.
LEFT JOIN saa kaikki tietueet linkitetystä vasemmanpuoleisesta taulusta, mutta jos olet valinnut joitain sarakkeita oikeanpuoleisesta taulusta, nämä sarakkeet sisältävät NULLin, jos niihin liittyviä tietueita ei ole.
OIKEA JOIN on samanlainen kuin edellä, mutta se saa kaikki tietueet OIKEASTA taulusta.
FULL JOIN hakee kaikki tietueet molemmista taulukoista ja laittaa NULL:n niihin sarakkeisiin, joihin liittyviä tietueita ei ole vastakkaisessa taulukossa.
SQL JOIN -lauseketta käytetään kahden tai useamman taulukon rivien yhdistämiseen, niiden välisen yhteisen kentän perusteella.
SQL:ssä on käytettävissä erityyppisiä liitoksia:
INNER JOIN: palauttaa rivejä, kun molemmissa taulukoissa on vastaavuus.
LEFT JOIN: Palauttaa kaikki vasemmanpuoleisen taulukon rivit, vaikka oikeanpuoleisessa taulukossa ei olisikaan vastaavuutta.
OIKEA JOIN: palauttaa kaikki rivit oikeasta taulukosta, vaikka vasemmassa taulukossa ei olisi yhtään vastaavuutta.
FULL JOIN: Yhdistää sekä vasemman että oikean ulomman liitoksen tulokset.
Yhdistetty taulukko sisältää kaikki tietueet molemmista taulukoista ja täyttää NULL-tietueet puuttuvien osumien osalta kummallakin puolella.
SELF JOIN: Tätä käytetään yhdistämään taulukko itseensä ikään kuin taulukko olisi kaksi taulukkoa, jolloin ainakin yksi taulukko nimetään SQL-lauseessa väliaikaisesti uudelleen.
KARTESIAN JOIN: palauttaa kahden tai useamman yhdistetyn taulukon tietuejoukkojen kartesiittisen tulon.
Voimme ottaa jokaisen neljän ensimmäisen liitoksen yksityiskohdat :
Meillä on kaksi taulukkoa, joilla on seuraavat arvot.
TableA
id firstName lastName
.......................................
1 arun prasanth
2 ann antony
3 sruthy abc
6 new abc
TaulukkoB
id2 age Place
................
1 24 kerala
2 24 usa
3 25 ekm
5 24 chennai
....................................................................
INNER JOIN
Huomaa :se antaa kahden taulukon leikkauspisteen, eli rivit, jotka ovat yhteisiä taulukossaA ja taulukossaB.
Syntaksi
SELECT table1.column1, table2.column2...
FROM table1
INNER JOIN table2
ON table1.common_field = table2.common_field;
Sovelletaan sitä esimerkkitaulukkoon :
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
INNER JOIN TableB
ON TableA.id = TableB.id2;
Tulos on
firstName lastName age Place
..............................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
LEFT JOIN
Huomautus : antaa kaikki valitut rivit taulukossaA sekä kaikki yhteiset valitut rivit taulukossaB.
Syntaksi
SELECT table1.column1, table2.column2...
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;
Sovelletaan sitä esimerkkitaulukkoon :
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
LEFT JOIN TableB
ON TableA.id = TableB.id2;
Tulos
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
new abc NULL NULL
OIKEA LIITTYMINEN
Huomautus : antaa kaikki valitut rivit taulukossaB sekä kaikki yhteiset valitut rivit taulukossaA.
Syntaksi
SELECT table1.column1, table2.column2...
FROM table1
RIGHT JOIN table2
ON table1.common_field = table2.common_field;
Sovelletaan sitä esimerkkitaulukkoon :
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
RIGHT JOIN TableB
ON TableA.id = TableB.id2;
Tulos
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
NULL NULL 24 chennai
FULL JOIN
Huomaa :Se palauttaa kaikki valitut arvot molemmista taulukoista.
Syntaksi
SELECT table1.column1, table2.column2...
FROM table1
FULL JOIN table2
ON table1.common_field = table2.common_field;
Sovelletaan sitä esimerkkitaulukkoon :
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
FULL JOIN TableB
ON TableA.id = TableB.id2;
Tulos
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
new abc NULL NULL
NULL NULL 24 chennai
Interenkiintoinen fakta
INNER-joineissa järjestyksellä ei ole merkitystä.
(LEFT, RIGHT tai FULL) OUTER-joineissa järjestyksellä on väliä.
Parempi tarkistaa tämä Linkki se antaa sinulle mielenkiintoisia yksityiskohtia liittymisjärjestyksestä.