Нет понятия, что нужно делать что-то в определенном порядке. Есть последствия конкретного выбора выражения.
Узнайте, что left join on
возвращает: inner join on
строки плюс несопоставленные строки левой таблицы, расширенные нулями. Всегда знайте, что inner join
вы хотите, как часть left join
. inner join on
или where
, для которого требуется, чтобы правый столбец таблицы был ненулевым после того, как left join on
удаляет все строки, расширенные нулями, то есть оставляет только свои строки inner join on
, т. Е. «Превращает внешнее соединение во внутреннее соединение». Вы говорите об этом.
Тебе не нужно беспокоиться об этом. Просто сосредоточьтесь на написании запросов, которые возвращают то, что вы хотите. Ваш вопрос похож на вопрос: должен ли я избегать деления на ноль, поскольку он не определен, или добавления нуля, потому что он ничего не делает? Почему бы вам, так как он не делает то, что вы хотите? Если вы пишете неправильные запросы, узнайте, что делают операторы. Есть ли эмпирическое правило для построения запроса SQL из понятного человеку описания?
PS Моя характеристика left join
&, когда его ноль-расширенные строки отбрасываются, фокусируется на ассоциированном inner join
, на on
в целом и на требовании, чтобы правые столбцы таблицы были нулевыми. Ваш выбор организации запчастей вводит вас в заблуждение и мешает вам. 1. Любые две таблицы могут быть join
ed on
любым условием. PK
- FK
равенство - это особый случай. (PK
s & FK
s не нужны для запроса. Однако они подразумевают определенные ограничения на входы и результаты.) FK
& unique
столбцы и другие столбцы могут иметь нулевые значения на входе. PK
означает unique not null
. 2. «совпадающие столбцы» и «ничто не будет соответствовать NULL» перепутаны, потому что это строки или пары строк, которые соответствуют или не совпадают, для всего условия on
. 3. «любые несоответствующие строки, включая NULL из результата OUTER JOIN, будут удалены, когда они INNER JOIN» - нет, это зависит от всего условия on
или where
. 4. «это было бы крайне редко» - не имеет значения; либо что-то может случиться, либо это не может произойти.