Mitä eroa on INNER JOIN, LEFT JOIN, RIGHT JOIN ja FULL JOIN välillä?

Mitä eroa on INNER JOIN, LEFT JOIN, RIGHT JOIN ja FULL JOIN välillä? MySQL:ssä?

Ratkaisu

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

Kommentit (34)

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.

Kommentit (6)

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

Kommentit (10)