左結合では実行できない右結合で実行できる(私が知っている)何もありません。ただし、左結合を使用した構文の方がsometimesい場合があります。次のテーブルがあるとしましょう:
Persons
ID | Name
Orders
ID | CustomerId | other unimportant stuff
SpecialOrderDetails
ID | OrderId | other stuff
データベース内のすべての人のリストと、特別な注文の詳細を含む注文のリストを取得する必要があるとします(すべての注文に特別な注文の詳細があるわけではありません)。そのため、通常は人から注文への左結合を行います。しかし、その後、特別な注文の詳細に参加する必要があります。そこで内部結合を使用すると、人から注文への左結合が内部結合に効率的になります。IE:これはあなたがしたいことですが、動作しません(特別な注文を持っていない人は除外されます):
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
したがって、次のように書き換えることができます。
--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
正確には明確ではありませんが(コメントがないと仮定)、それは仕事をします。これが1回限りのもの(つまり、誰かがいつか戻って保守しなければならないもの)である場合、正しい結合を使用すると、意図が明確になります。
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
これはもう少し簡潔で明確です(ただし、それを読んでいる人が正しい結合を理解している場合のみ)。これは左結合で記述できますが、ネストされた結合が必要であることに注意してください(右結合よりもおそらく慣れ親しんでいる人は少ないでしょう)。
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
この時点で、それは最も明確なものとほとんどの人が理解するものの選択です(ネストされた結合と呼ばれていなかった場合、その構文をグーグルする方法を知っていますか?)。
要するに、あなたは厳密に 正しい結合必要ありが、読みやすくするかもしれません。