Эти конструкции не одинаковы:
select *
from tbl1 inner join
tbl2
on true;
и:
select *
from tbl1 left join
tbl2
on true;
В большинстве случаев оба выполняют CROSS JOIN
.НО, есть разница, когда у tbl2
нет строк.
Когда у tbl2
нет строк, версия INNER JOIN
не возвращает строк.Версия LEFT JOIN
возвращает строки из первой таблицы со значениями NULL
из второй.
RIGHT JOIN
и FULL JOIN
ведут себя аналогично с пустыми таблицами.