No hay nada (que yo sepa) que se pueda hacer con una unión derecha que no se pueda hacer con una unión izquierda. Pero a veces la sintaxis con combinaciones izquierdas es más fea. Digamos que tiene las siguientes tablas:
Persons
ID | Name
Orders
ID | CustomerId | other unimportant stuff
SpecialOrderDetails
ID | OrderId | other stuff
Supongamos que necesita obtener una lista de todas las personas en su base de datos y cualquier pedido que tengan con detalles especiales de pedido (diremos que no todos los pedidos tienen detalles especiales de pedido). Por lo tanto, normalmente haría una unión izquierda de personas a pedidos. Pero luego debes unirte en detalles de pedidos especiales. Si usa una unión interna allí, la unión de la izquierda de las personas a las órdenes se convertirá efectivamente en una unión interna. IE: esto es lo que quieres hacer pero no funciona (excluirá a cualquiera que no tenga un pedido especial):
select p.*, o.*, d.*
from Persons p
left join Orders o on o.CustomerId = p.Id
inner join SpecialOrderDetails d on d.OrderId = o.Id
Entonces podrías reescribirlo así:
--get all the people without a special order
select p.*, NULL, NULL, ... --NULLs placeholders for all the fields from OrderDetails and SpecialOrderDetails
from Persons p
left join Orders o on o.CustomerId = p.Id
left join SpecialOrderDetails d on d.OrderId = o.Id
where o.Id is null
union
--get all the people with a special order
select p.*, o.*, d.*
from Persons p
inner join Orders o on o.CustomerId = p.Id
inner join SpecialOrderDetails d on d.OrderId = o.Id
No es exactamente claro (suponiendo que no haya comentarios), pero hace el trabajo. Si esto es algo más que un hecho único (es decir, algo que alguien va a tener que volver y mantener algún día), usar una unión correcta podría aclarar cuál era la intención.
select p.*, o.*, d.*
from Orders o
inner join SpecialOrderDetails d on d.OrderId = o.Id
right join Persons p on p.Id = o.CustomerId
Lo cual es un poco más sucinto y claro (pero solo si quien lo está leyendo entiende bien se une). Tenga en cuenta que esto se puede escribir con combinaciones izquierdas, pero requiere una combinación anidada (con la que probablemente menos personas estén familiarizadas que las combinaciones correctas).
select p.*, o.*, d.*
from Persons p
left join Orders o
inner join SpecialOrderDetails d on d.OrderId = o.Id
on o.CustomerId = p.Id
En este punto, es una opción de lo que está más claro y lo que la mayoría de la gente entenderá (¿sabrías cómo googlear esa sintaxis si no supieras que se llama una unión anidada?).
En resumen, no necesita estrictamente las combinaciones correctas, pero podrían facilitar su lectura.