RIGHT
соединения используются редко. Причина в том, что соединение LEFT
легче воспринимается большинством людей (мое мнение, хотя, возможно, люди, использующие RTL-запись, могут не согласиться).
Если вам нужны все строки таблицы 1 и любые совпадающие строки таблицы 2, обычно вы думаете о наборе результатов, в котором слева от результатов есть столбцы таблицы 1 и в правой части столбцы таблицы 2.
Итак, вы пишете:
SELECT * FROM Table1 LEFT JOIN Table2 ON <condition>
Это точно так же, как:
SELECT * FROM Table2 RIGHT JOIN Table1 ON <condition>
Конечно, правое объединение печатает столбцы таблицы в другом порядке. запрос выводит разные
Вы должны явно указать порядок столбцов в результатах. Поэтому вместо SELECT *
, если вы хотите, чтобы сначала столбцы таблицы 2 напишите:
SELECT Table2.*, Table1.* ....
или, если вам не нужны все столбцы, перечислите все столбцы, которые вы хотите:
SELECT Table2.col1, Table2.col2, ...., Table1.col1, ....
Конечно, рекомендуется использовать псевдонимы, чтобы сделать код короче, чтобы ваш запрос можно было записать:
SELECT o.*, u.*
FROM orders AS o LEFT JOIN users AS u
ON u.order_id = o.id;