2016-03-16 2 views
0

Я хочу знать, что использование правого соединения точно так же, как мы можем получить тот же результат из левого соединения, заменив таблицы.Что такое использование правого соединения, так как мы можем получить тот же результат из левого соединения.

Итак, давайте рассмотрим пример здесь -

Пусть мне нужно соединить две таблицы TAB_A и TAB_B с правой присоединиться, как показано ниже, чтобы получить результат -

SELECT * FROM TAB_A RIGHT JOIN TAB_B 

, но я также могу получить тот же результат запроса, используя левое соединение также вместо соединения справа, как показано ниже

SELECT * FROM TAB_B LEFT JOIN TAB_A 

так что мой вопрос, какова цель права вступать в SQL точно, есть ли связанные производительности со mparision или что-то, что не может быть сделано левым соединением?

+1

Вставить влево присоединиться. Забудьте о правильном вступлении, это слишком запутанно для большинства людей. (Многие из них находят, что левое соединение достаточно сложно понять.) Вам никогда не нужно присоединяться, просто переключайте таблицы и делайте левое соединение - такое же исполнение и т. Д. – jarlh

+0

Эй, матиа, я не спрашивал о различии здесь, поскольку я знаю, что такое разница между обоими из них, здесь я просто хочу знать о правильном объединении, так как должна быть какая-то цель правого соединения, так как у нас есть это в sql – Govind

+0

. Вопрос заставляет меня задуматься о цели <, <=, > = тоже :) –

ответ

-1

Как указано в http://dev.mysql.com/doc/refman/5.7/en/outer-join-simplification.html

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

Использование ПРАВИЛЬНОЙ JOIN приведет к конверсии парсера, но оно должно быть незначительным в pracitce.

0

Предположим, что вам нужно сделать двойной присоединиться, как это:

SELECT * 
FROM table1 
LEFT JOIN table2 ON table1.name = table2.name1 
RIGHT JOIN table3 ON table2.position = table3.job; 

что когда RIGHT JOIN полезна ...

С уважением

+0

да получилось ... это должно быть причиной для правильного присоединения – Govind

+0

Не совсем. Вы можете легко переписать этот запрос, используя только «LEFT» или только «RIGHT». –

+0

@ ypercubeᵀᴹ ты совершенно прав (не осталось :)). Вы можете переписать только при вставке LEFT или RIGHT. Этот предмет подробно обсуждался в http://stackoverflow.com/questions/436345/when-or-why-would-you-use-a-right-outer-join-instead-of-left.Скажем, что ПРАВИЛЬНОЕ объединение упростит, если у вас уже есть JOIN, чтобы изменить его, не переписывая и, вообще говоря, сделать язык более полным для разных способов мышления. –

0

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

Смежные вопросы