SQL RIGHT JOINは、右テーブルからすべての行と左から一致する行を含めます。 右からマッチしないものについては、対応する列でNULLが返されます。

これが、SQL RIGHT JOIN と INNER JOIN の主な違いです。 内部結合では結合条件に一致する行のみを返しますが、右外部結合では、右テーブルの行がすべて結果に含まれることが保証されます。

この図をご覧ください。

Fredの結果を確認し、一致するProductがないことに気づきました。 また、the は結果に含まれていません。

右結合の別の名称は右外部結合です。

右結合の一般的な形式は次のとおりです。

SELECT table1.column1, table2.column2, … FROM table1 RIGHT JOIN table2 ON table1.commonColumn = table2.commonColumn 

注釈です。

  • この例では、table2が右のテーブルで、table1が左のテーブルです。
  • commonColumnの値が一致しない場合、table1.column1はNULLを返します

SQL RIGHT JOIN例

アドベンチャーワークスのデータベース内のすべての人が社員であるわけではありません。 すべての人と、存在する場合はその雇用データの一部をリストアップしてみましょう。 そのためにRIGHT JOINを使用します。

返したいすべての行があるpersonテーブルがJOIN演算子の右側にあるため、RIGHT JOINであることに留意してください。

-すべての人と雇用データがある場合、それをリストアップします。 -SELECT P.FirstName , P.LastName , E.HireDate , E.JobTitle FROM HumanResources.Employee AS E RIGHT JOIN Person.Person AS P ON P.BusinessEntityID = E.BusinessEntityID;
--List all People and any employment data, if it exists. --Use Outer Join to do so... SELECT P.FirstName , P.LastName , E.HireDate , E.JobTitle FROM HumanResources.Employee AS E RIGHT JOIN Person.Person AS P ON P.BusinessEntityID = E.BusinessEntityID; 

結果を見て、一部の人にNULLが存在することに注意してください。 これは、Employee テーブルに対応するエントリが存在しないためです。 RIGHT JOIN は宣伝どおり動作しており、一致するものをすべて返し、存在しない場合は NULL を返します。

重要なポイント

RIGHT JOIN を使用する場合、1 つのテーブルから別のテーブルへのマッチが複数の行にマッチする可能性があることに留意してください。 つまり、結果には、どちらかのテーブルにある行よりも多くの行が含まれる可能性があります。

列が一致しない場合、右側の行をクエリし、左側のテーブル列をNULLにします。

コメントを残す

メールアドレスが公開されることはありません。