Левое соединение против правого соединения - PullRequest
1 голос
/ 01 августа 2020

Следующие два запроса дают одинаковый результат?

1.    SELECT * FROM Table a LEFT JOIN Table b ON a.id = b.id;

2.    SELECT * FROM Table b RIGHT JOIN Table a ON a.id = b.id;

Ответы [ 2 ]

0 голосов
/ 01 августа 2020

Нет, это не одно и то же, потому что столбцы находятся в разном порядке. Вы используете select *, поэтому порядок столбцов основан на порядке таблиц в предложении from.

Тем не менее, с двумя таблицами left join и right join эквивалентны, с переключенными таблицами и теми же условиями join. Это не применяется, поскольку добавляются новые объединения . Итак, они могут быть разными:

select . . .
from a left join b left join c

по сравнению с:

select c right join b right join a

Причина в том, как группируются объединения, что всегда слева направо, если у вас нет круглые скобки.

from (a left join b) left join c

select (c right join b) right join a

Если вас интересует более общая ситуация (и, возможно, примеры, когда они не совпадают), задайте новый вопрос. Тем не менее, мой совет - всегда использовать left join s. По моему опыту, right join почти никогда не нужен.

0 голосов
/ 01 августа 2020

Да, оба дадут одинаковый результат с разным порядком сортировки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...