Left outer join keeps every left row and recomputes match counts.

highlighted = computed this step

Left outer join

A left outer join keeps every left row. Matched rows combine both sides; unmatched left rows get NULL cells on the right. This is a tiny finite-table model, not a dialect guide.

left rows survive\text{left rows survive}

Bag rows are preserved

The compiled output has 5 rows. The first left row has 2 matches, and 2 left rows are unmatched.

rows=5,first matches=2\text{rows}=5,\quad \text{first matches}=2

SQL extensions are rendered as tiny finite-table semantics; SQL dialect completeness, optimizer behavior, execution cost, full DDL behavior, and database-product claims are out of scope.

compiled summaryfactvaluerowCount5arity5rootKindleft_outer_join Left outer joinStudents.sidStudents.nameScores.sidScores.courseScores.scores1Adas1DB90s1Adas1OS80s2Bos2DBNULLs3CyNULLNULLNULLNULLNilNULLNULLNULL left-row match countsleftRowmatchCount02112030

Summary

The join result is recomputed from the input bags. Note: join algorithms and optimizer choices are out of scope.

left outer join as finite rows\text{left outer join as finite rows}