MySQL té principalment dos tipus d'unions anomenades LEFT JOIN i RIGHT JOIN. La principal diferència entre aquestes unions és la inclusió de files no coincidents . El LEFT JOIN inclou tots els registres del costat esquerre i les files coincidents de la taula dreta, mentre que RIGHT JOIN retorna totes les files del costat dret i les files no coincidents de la taula esquerra. En aquesta secció, coneixerem les diferències populars entre la unió esquerra i dreta. Abans d'explorar la comparació, primer entenem les clàusules JOIN, LEFT JOIN i RIGHT JOIN a MySQL .
Què és la clàusula JOIN?
A uneix-te s'utilitza per consultar dades de diverses taules i retorna el resultat combinat de dues o més taules mitjançant una condició. La condició de la clàusula d'unió indica com coincideixen les columnes entre les taules especificades.
Què és la clàusula LEFT JOIN?
La clàusula Left Join uneix dues o més taules i retorna totes les files de la taula esquerra i els registres coincidents de la taula dreta o retorna null si no troba cap registre coincident. També es coneix com Unió exterior esquerra . Per tant, Outer és la paraula clau opcional que cal utilitzar amb Left Join.
Ho podem entendre amb la següent representació visual:
Per llegir més informació sobre la unió a LEFT, clica aquí .
Què és la clàusula RIGHT JOIN?
La clàusula Right Join uneix dues o més taules i retorna totes les files de la taula de la dreta i només els resultats de l'altra taula que compleixen la condició d'unió especificada. Si troba registres no coincidents de la taula lateral esquerra, retorna un valor nul. També es coneix com Unió exterior dreta . Per tant, Outer és la clàusula opcional per utilitzar amb Right Join.
Ho podem entendre amb el següent representació visual .
Per obtenir més informació sobre RIGHT JOIN, feu clic aquí.
Sintaxi de la clàusula LEFT JOIN
La següent és la sintaxi general de LEFT JOIN:
SELECT column_list FROM table_name1 LEFT JOIN table_name2 ON column_name1 = column_name2 WHERE join_condition
La següent és la sintaxi general de LEFT OUTER JOIN:
SELECT column_list FROM table_name1 LEFT OUTER JOIN table_name2 ON column_name1 = column_name2 WHERE join_condition
Sintaxi de la clàusula RIGHT JOIN
La següent és la sintaxi general de RIGHT JOIN:
SELECT column_list FROM table_name1 RIGHT JOIN table_name2 ON column_name1 = column_name2 WHERE join_condition
La següent és la sintaxi general de RIGHT OUTER JOIN:
SELECT column_list FROM table_name1 RIGHT OUTER JOIN table_name2 ON column_name1 = column_name2 WHERE join_condition
UNIR-SE A L'ESQUERRA vs. UNIR A LA DRETA
La següent taula de comparació explica les seves principals diferències d'una manera ràpida:
UNIR-SE A L'ESQUERRA | UNIR-SE A LA DRETA |
---|---|
Uneix dues o més taules, retorna tots els registres de la taula de l'esquerra i les files coincidents de la taula de la dreta. | S'utilitza per unir dues o més taules, retorna tots els registres de la taula de la dreta i les files coincidents de la taula de l'esquerra. |
El conjunt de resultats contindrà un valor nul si no hi ha cap fila coincident a la taula lateral dreta. | El conjunt de resultats contindrà un valor nul si no hi ha cap fila coincident a la taula lateral esquerra. |
També es coneix com a LEFT OUTER JOIN. | També s'anomena RIGHT OUTER JOIN. |
Exemple
Entenem les diferències entre ambdues unions mitjançant exemples. Suposem que tenim una taula anomenada ' client 'i' ordres ' que conté les dades següents:
Taula: client
Taula: comandes
LEFT JOIN Exemple
La següent instrucció SQL retorna els registres coincidents de les dues taules mitjançant la consulta LEFT JOIN:
SELECT cust_id, cust_name, order_num, order_date FROM customer LEFT JOIN orders ON customer.cust_id = orders.order_id WHERE order_date <'2020-04-30'; < pre> <p>After successful execution of the query, we will get the output as follows:</p> <img src="//techcodeview.com/img/mysql-tutorial/37/difference-between-left-join-5.webp" alt="Left Join vs Right Join"> <p> <strong>RIGHT JOIN Example</strong> </p> <p>Following SQL statement returns the matching records from both tables using the RIGHT JOIN query:</p> <pre> SELECT cust_id, cust_name, occupation, order_num, order_date FROM customer RIGHT JOIN orders ON cust_id = order_id ORDER BY order_date; </pre> <p>After successful execution of the query, we will get the output as follows:</p> <img src="//techcodeview.com/img/mysql-tutorial/37/difference-between-left-join-6.webp" alt="Left Join vs Right Join"> <hr></'2020-04-30';>
Després d'executar correctament la consulta, obtindrem la sortida de la següent manera:
'2020-04-30';>