Оператор RIGHT JOIN объединяет две таблицы на основе общего столбца и выбирает не только записи с совпадающими значениями в этих столбцах, но и все оставшиеся строки из правой таблицы. Например:
1 2 3 4 |
SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers RIGHT JOIN Orders ON Customers.customer_id = Orders.customer; |
Вот как работает этот код:
Здесь мы выбираем столбцы customer_id и first_name (из таблицы Customers) и столбец amount (из таблицы Orders). В результате получаем те строки, в которых есть совпадение между customer_id (таблицы Customers) и customer (таблицы Orders) вместе со всеми остальными строками из (правой) таблицы Orders.
Синтаксис оператора RIGHT JOIN
Синтаксис оператора RIGHT JOIN
следующий:
1 2 3 4 |
SELECT столбцы FROM таблица1 RIGHT JOIN таблица2 ON таблица1.имя_столбца = таблица2.имя_столбца; |
Оператор RIGHT JOIN с оператором WHERE
Вот пример использования оператора RIGHT JOIN
с оператором WHERE:
1 2 3 4 5 |
SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers RIGHT JOIN Orders ON Customers.customer_id = Orders.customer WHERE Orders.amount >= 500; |
Здесь мы объединяем две таблицы и выбираем строки, в которых сумма (amount) больше или равна 500.
Оператор RIGHT JOIN с псевдонимами
Мы можем использовать псевдонимы (оператор AS) с оператором RIGHT JOIN
, чтобы сделать код короче и чище. Например:
1 2 3 4 |
SELECT C.cat_name, P.prod_title FROM Categories AS C RIGHT JOIN Products AS P ON C.cat_id = P.cat_id; |
Здесь мы выбираем общие строки между таблицами Categories и Products.
Сравнение RIGHT JOIN с другими JOIN-ами
RIGHT JOIN против RIGHT OUTER JOIN
Мы можем использовать RIGHT OUTER JOIN
вместо RIGHT JOIN
. По сути, эти два оператора одинаковы.
Например, следующий фрагмент кода:
1 2 3 4 |
SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers RIGHT JOIN Orders ON Customers.customer_id = Orders.customer; |
идентичен
1 2 3 4 |
SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers RIGHT OUTER JOIN Orders ON Customers.customer_id = Orders.customer; |
RIGHT JOIN против INNER JOIN
Оператор RIGHT JOIN
выбирает не только общие строки между двумя таблицами, но и также все остальные строки из правой таблицы. В то время как оператор INNER JOIN выбирает только общие строки между двумя таблицами.
RIGHT JOIN
1 2 3 4 |
SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers RIGHT JOIN Orders ON Customers.customer_id = Orders.customer; |
Результат (см. таблицы):
INNER JOIN
1 2 3 4 |
SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers INNER JOIN Orders ON Customers.customer_id = Orders.customer; |
Результат:
RIGHT JOIN против LEFT JOIN
Оператор RIGHT JOIN
выбирает не только общие строки, но и также все остальные строки из правой таблицы. В то время как оператор LEFT JOIN выбирает общие строки, а также все остальные строки из левой таблицы.
RIGHT JOIN
1 2 3 4 |
SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers RIGHT JOIN Orders ON Customers.customer_id = Orders.customer; |
Результат (см. таблицы):
LEFT JOIN
1 2 3 4 |
SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers LEFT JOIN Orders ON Customers.customer_id = Orders.customer; |
Результат:
RIGHT JOIN против FULL OUTER JOIN
Оператор RIGHT JOIN
выбирает общие строки между двумя таблицами, а также все остальные строки из правой таблицы. В то время как оператор FULL OUTER JOIN выбирает все строки из обеих таблиц.
RIGHT JOIN
1 2 3 4 |
SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers RIGHT JOIN Orders ON Customers.customer_id = Orders.customer; |
Результат (см. таблицы):
FULL OUTER JOIN
1 2 3 4 |
SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers FULL OUTER JOIN Orders ON Customers.customer_id = Orders.customer; |
Результат: