Koks skirtumas tarp INNER JOIN, LEFT JOIN, RIGHT JOIN ir FULL JOIN?

Koks yra skirtumas tarp INNER JOIN , LEFT JOIN , RIGHT JOIN ir FULL JOIN MySQL ?

1237
18 апр. Lion King nustatė balandžio 18 d 2011-04-18 20:15 '11 prie 20:15 2011-04-18 20:15
@ 3 atsakymai

Šio originalo straipsnio skaitymas kodo projekte padės jums daug: vizualinis SQL jungčių vaizdavimas .

2019

2539
31 мая '11 в 16:29 2011-05-31 16:29 atsakymą pateikė Pranay Rana , gegužės 31 d. 11, 16:29 2011-05-31 16:29

INNER JOIN suranda visus įrašus, kurie yra bendri abiem lentelėms pagal užsienio raktą.

LEFT JOIN surenka visus įrašus iš atitinkamos kairiosios lentelės, bet jei pasirinkote kai kuriuos stulpelius iš dešinės lentelės, jei nėra susijusių įrašų, šiuose stulpeliuose bus NULL

RIGHT CONNECTION yra panašus į aukščiau pateiktą, bet gauna visus įrašus dešinėje lentelėje

FULL JOIN surenka visus įrašus iš abiejų lentelių ir vietų NULL stulpeliuose, kur atitinkami įrašai nėra priešingoje lentelėje.

537
18 апр. Atsakymą pateikė Brian Leeming 18 balandžio. 2011-04-18 23:28 '11 11:28 PM 2011-04-18 23:28

SQL JOIN išlyga naudojama dviejų ar daugiau lentelių eilėms sujungti, remiantis bendru jų lauku.

SQL yra įvairių tipų jungčių:

INNER JOIN : grąžina eilutes, kai abiejose lentelėse yra atitikimas.

LEFT JOIN : grąžina visas eilutes iš kairiojo stalo, net jei dešinėje lentelėje nėra atitikmenų.

RIGHT JOIN : grąžina visas eilutes iš dešiniojo stalo, net jei kairėje lentelėje nėra atitikmenų.

VISIŠKAI SUSIJUSI : sujungiami kairiojo ir dešiniojo išorinių jungčių rezultatai.

Sujungtoje lentelėje bus įrašyti visi abiejų lentelių įrašai ir užpildyti NULL už atitikmenų nebuvimą abiejose pusėse.

SELF JOIN : naudojamas prisijungti prie lentelės į save, tarsi lentelė būtų dvi lentelės, laikinai pervadinus bent vieną lentelę iš SQL.

CARTESIAN JOIN : grąžina dekartų rinkinį iš dviejų ar daugiau bendrų lentelių.

Kiekvieną pirmąjį keturis junginius mes galime išsamiai išnagrinėti:

Turime dvi lenteles su šiomis reikšmėmis.

Tablea

 id firstName lastName ....................................... 1 arun prasanth 2 ann antony 3 sruthy abc 6 new abc 

Stalas

 id2 age Place ................ 1 24 kerala 2 24 usa 3 25 ekm 5 24 chennai 

.................................................. ..................

VIDAUS SUJUNGIMAS

Pastaba : tai duoda dvi lenteles, t. Y. Eilutes, kurias jie turi bendroje lentelėje TableA ir TableB

Sintaksė

 SELECT table1.column1, table2.column2... FROM table1 INNER JOIN table2 ON table1.common_field = table2.common_field; 

Taikykite jį mūsų mėginių lentelėje:

 SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place FROM TableA INNER JOIN TableB ON TableA.id = TableB.id2; 

Rezultatas bus

 firstName lastName age Place .............................................. arun prasanth 24 kerala ann antony 24 usa sruthy abc 25 ekm 

Į kairę

Pastaba : visos pasirinktos eilutės bus rodomos A lentelėje, taip pat visos bendrosios lentelės eilutės.

Sintaksė

 SELECT table1.column1, table2.column2... FROM table1 LEFT JOIN table2 ON table1.common_field = table2.common_field; 

Taikykite jį mūsų mėginių lentelėje:

 SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place FROM TableA LEFT JOIN TableB ON TableA.id = TableB.id2; 

rezultatas

 firstName lastName age Place ............................................................................... arun prasanth 24 kerala ann antony 24 usa sruthy abc 25 ekm new abc NULL NULL 

TEISINIS PRIEŽIŪRA

Pastaba : visos pasirinktos eilutės bus rodomos B lentelėje, taip pat visos bendrosios lentelės eilutės.

Sintaksė

 SELECT table1.column1, table2.column2... FROM table1 RIGHT JOIN table2 ON table1.common_field = table2.common_field; 

Taikykite jį mūsų mėginių lentelėje:

 SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place FROM TableA RIGHT JOIN TableB ON TableA.id = TableB.id2; 

rezultatas

 firstName lastName age Place ............................................................................... arun prasanth 24 kerala ann antony 24 usa sruthy abc 25 ekm NULL NULL 24 chennai 

VISAS SUSIJUSI

Pastaba Jis grąžins visas pasirinktas vertes iš abiejų lentelių.

Sintaksė

 SELECT table1.column1, table2.column2... FROM table1 FULL JOIN table2 ON table1.common_field = table2.common_field; 

Taikykite jį mūsų mėginių lentelėje:

 SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place FROM TableA FULL JOIN TableB ON TableA.id = TableB.id2; 

rezultatas

 firstName lastName age Place ............................................................................... arun prasanth 24 kerala ann antony 24 usa sruthy abc 25 ekm new abc NULL NULL NULL NULL 24 chennai 

Įdomus faktas

INNER prisijungia prie užsakymo nesvarbu

Už (kairėn, dešinėn ar pilnai) išorinės jungtys, tvarka

Tai geriau eiti patikrinti šią nuorodą, ji suteiks jums įdomių detalių apie paraiškos pateikimo procedūrą.

501
25 февр. atsakymą pateikė Arunprasanth KV , vasario 25 d. 2015-02-25 15:40 '15 15:40 2015-02-25 15:40