Returns all rows from the left table and matching rows from the right; NULLs fill unmatched right-side columns.
Returns all rows from the left table and matched rows from the right; non-matching right rows produce NULLs. Essential for finding records with or without a related match (e.g., orders with no invoice). NULLs in the result can be misleading -- distinguish between no match and legitimate missing value.
| Database System | Support Status | Since Version | Notes |
|---|---|---|---|
| MySQL | ✓ Supported | all | OUTER keyword is optional (LEFT JOIN = LEFT OUTER JOIN). |
| PostgreSQL | ✓ Supported | all | OUTER keyword is optional (LEFT JOIN = LEFT OUTER JOIN). |
| SQL Server | ✓ Supported | all | OUTER keyword is optional (LEFT JOIN = LEFT OUTER JOIN). |
| Oracle | ✓ Supported | all | OUTER keyword is optional. Legacy syntax: WHERE a.id = b.a_id(+) |
| SQLite | ✓ Supported | all | OUTER keyword is optional (LEFT JOIN = LEFT OUTER JOIN). |
Use LEFT JOIN to keep all records from the left table even when no match exists on the right.
OUTER keyword is optional (LEFT JOIN = LEFT OUTER JOIN).
OUTER keyword is optional (LEFT JOIN = LEFT OUTER JOIN).
OUTER keyword is optional (LEFT JOIN = LEFT OUTER JOIN).
OUTER keyword is optional. Legacy syntax: WHERE a.id = b.a_id(+)
OUTER keyword is optional (LEFT JOIN = LEFT OUTER JOIN).