Насколько я понимаю, в левом внешнем соединении между двумя таблицами (скажем, a и b) все строки таблицы с левой стороны объединения извлекаются независимо от значений в строках справаТаблица.
Это верно в том смысле, что в нем говорится о том, что возвращает left join on
, но это не определение того, что он возвращает.left join on
возвращает inner join on
строк плюс (union all
) несопоставленные строки левой таблицы, расширенные нулями.
inner join on
возвращает строки cross join
, которые удовлетворяют условию on
- что может бытьлюбое условие на столбцах.cross join
возвращает каждую комбинацию строки из левой таблицы и строки из правой таблицы.
Что вы ожидаете от значения outer join
без on
?В стандартном SQL outer
& inner
join
должно быть on
.inner join
on
истинное состояние такое же, как cross join
.Который не имеет бесподобных левых строк таблицы.Таким образом, если вы хотите, чтобы outer join
без on
означало outer join
on
истинное условие, то, поскольку в inner join
on
нет этого условия, строки не равны, результатом также будет cross join
,(MySQL позволяет использовать inner join
без on
, но это просто означает cross join
.)