LEFT JOIN

SELECT … FROM table1 LEFT JOIN table2 ON condition

Renvoie toutes les lignes de la table de gauche. Là où la table de droite n’a pas de correspondance, ses colonnes valent NULL. RIGHT JOIN fonctionne à l’inverse et s’utilise rarement.

Paramètres

  • ON condition – la condition de jointure ; les conditions sur la table de droite se mettent ici et non dans WHERE.

Exemples

Les exemples avec les tables customers, products et orders utilisent la base de données d’exemple de la série Bases du SQL.

SELECT c.name, COUNT(o.id) AS orders_count
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
GROUP BY c.id, c.name
ORDER BY c.id;
+--------------+--------------+
| name         | orders_count |
+--------------+--------------+
| Jane Smith   |            3 |
| Peter Brown  |            2 |
| Chloé Martin |            1 |
| Thomas Clark |            1 |
| Lucy Turner  |            0 |
+--------------+--------------+

La condition sur la table de droite se met dans ON – les clients sans commande en février restent alors aussi, avec zéro :

SELECT c.name, COUNT(o.id) AS in_february_on
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id AND o.order_date >= '2026-02-01' AND o.order_date < '2026-03-01'
GROUP BY c.id, c.name
ORDER BY c.id;
+--------------+----------------+
| name         | in_february_on |
+--------------+----------------+
| Jane Smith   |              1 |
| Peter Brown  |              0 |
| Chloé Martin |              1 |
| Thomas Clark |              0 |
| Lucy Turner  |              0 |
+--------------+----------------+

Points d’attention

  • Une condition sur une colonne de la table de droite dans WHERE (WHERE o.order_date >= …) rejette les lignes avec NULL et fait du LEFT JOIN une jointure interne. Elle se met dans ON, comme dans le deuxième exemple.
  • Comptez COUNT(o.id) et non COUNT(*) – celui-ci renverrait 1 pour un client sans commande.

Une explication détaillée avec d’autres exemples : Joindre des tables avec JOIN (série Bases du SQL).

Voir aussi :
JOIN
IS NULL
IFNULL()