Here is my table structure: SQL Fiddle
CREATE TABLE mytable (
id int,
related int
);
INSERT into mytable VALUES(1, NULL);
INSERT into mytable VALUES
First query: t1.related = t2.id
t1 joined t2 id related | id related --------------+------------- 1 NULL | -- -- 2 1 | 1 NULL 3 1 | 1 NULL
An inner join would result in only two rows, but the outer join also preserves the first row that has no match.
Second query: t1.id = t2.related
t1 joined t2 id related | id related --------------+------------- 1 NULL | 2 1 1 NULL | 3 1 2 1 | -- -- 3 1 | -- --
Here too, an inner join would result in only two rows, but the outer join also preserves the two rows that have no match.