sql >> Database teknologi >  >> RDS >> Mysql

Hvornår skal man bruge LEFT JOIN og hvornår skal man bruge INNER JOIN?

Er der nogen fangst? Ja, det er der -- venstre sammenføjning er en form for ydre sammenføjning, mens indre sammenføjning er en form for, ja, indre sammenføjning.

Her er eksempler, der viser forskellen. Vi starter med basisdataene:

mysql> select * from j1;
+----+------------+
| id | thing      |
+----+------------+
|  1 | hi         |
|  2 | hello      |
|  3 | guten tag  |
|  4 | ciao       |
|  5 | buongiorno |
+----+------------+

mysql> select * from j2;
+----+-----------+
| id | thing     |
+----+-----------+
|  1 | bye       |
|  3 | tschau    |
|  4 | au revoir |
|  6 | so long   |
|  7 | tschuessi |
+----+-----------+

Og her vil vi se forskellen mellem en indre sammenføjning og en venstre sammenføjning:

mysql> select * from j1 inner join j2 on j1.id = j2.id;
+----+-----------+----+-----------+
| id | thing     | id | thing     |
+----+-----------+----+-----------+
|  1 | hi        |  1 | bye       |
|  3 | guten tag |  3 | tschau    |
|  4 | ciao      |  4 | au revoir |
+----+-----------+----+-----------+

Hmm, 3 rækker.

mysql> select * from j1 left join j2 on j1.id = j2.id;
+----+------------+------+-----------+
| id | thing      | id   | thing     |
+----+------------+------+-----------+
|  1 | hi         |    1 | bye       |
|  2 | hello      | NULL | NULL      |
|  3 | guten tag  |    3 | tschau    |
|  4 | ciao       |    4 | au revoir |
|  5 | buongiorno | NULL | NULL      |
+----+------------+------+-----------+

Wow, 5 rækker! Hvad skete der?

Ydre sammenføjninger såsom left join bevar rækker, der ikke matcher -- så rækker med id 2 og 5 bevares af den venstre joinforespørgsel. De resterende kolonner udfyldes med NULL.

Med andre ord er venstre og indre samlinger ikke udskiftelige.



  1. PostgreSQL 11:Patch-anmeldere til partitionering af patches

  2. Bruger du resultatet af et udtryk (f.eks. funktionskald) i en parameterliste med lagret procedure?

  3. Formular i PDO for at opdatere data

  4. Hvordan installeres pyodbc 64-bit?