Après un LEFT JOIN, les lignes sans correspondance sont conservées avec les colonnes de la table droite à NULL. Un filtre dans WHERE est appliqué ensuite :

SELECT
FROM client c
LEFT JOIN commande o ON o.client_id = c.id
WHERE o.statut = 'payee';

Pour une ligne sans commande, o.statut = 'payee' vaut UNKNOWN, pas TRUE ; la ligne est donc supprimée. Avec un prédicat qui rejette les NULL, le LEFT JOIN se comporte alors comme un INNER JOIN.

Pour filtrer les lignes droites tout en conservant toutes les lignes gauches, placer le filtre dans ON :

SELECT
FROM client c
LEFT JOIN commande o
ON o.client_id = c.id
AND o.statut = 'payee';

Les clients sans commande payée restent présents, avec les colonnes de o à NULL.

Si l’intention est plutôt de conserver uniquement les lignes satisfaisant le filtre ou réellement sans correspondance :

WHERE o.statut = 'payee' OR o.id IS NULL

o.id doit alors être une colonne non nullable de la table droite. Cette variante n’est pas équivalente au filtre dans ON : elle exclut un client ayant des commandes, mais aucune commande payée.