левое и правое соединения: какова реальная разница, поскольку я могу инвертировать операнды? - PullRequest
1 голос
/ 07 марта 2012

Я изучаю SQL, я вообще не тестировал, поэтому прошу прощения за мой глупый вопрос. по-видимому (по-моему, LOL) соединение влево и вправо может быть эквивалентно инвертированию таблиц (операндов). это правильно?

если да, то почему я предпочитаю написать это:

SELECT * FROM aaa LEFT OUTER JOIN bbb ON aaa.x = bbb.x

вместо этого:

SELECT * FROM bbb RIGHT OUTER JOIN aaa ON aaa.x = bbb.x

Ответы [ 2 ]

8 голосов
/ 07 марта 2012

Лучший способ, который я нашел, это посмотреть на изображение ниже, чтобы очистить ваши сомнениястол на какой стороне?

alt text

3 голосов
/ 07 марта 2012

Во многих случаях вам нужно объединить более 2 таблиц - например, хранимые процедуры, представления или запросы, вам нужны данные из более чем 2 таблиц. В этих сценариях вам нужно выбрать начальную точку - в данном случае таблицу - для вашего запроса.

В одном случае таблица «aaa» подойдет для начала запроса, в другом - «bbb».

Вот почему существуют объединения LEFT и RIGHT.

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