LEFT JOINS と RIGHT JOINS を使用した MySQL FULL JOIN のエミュレーション
MySQL は、FULL JOIN 操作をネイティブにサポートしません。ただし、LEFT JOIN と RIGHT JOIN を組み合わせて使用しても、同様の結果を得ることができます。
問題を理解する
目標は、以下を含む結果セットを返すことです。一致するフィールド (P_Id) がいずれかのテーブルで null であっても、両方のテーブル (Persons と Orders) のすべてのレコードtable.
解決策
FULL JOIN をシミュレートするには、次のクエリを使用します。
SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p LEFT JOIN Orders o ON p.P_Id = o.P_Id UNION ALL SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p RIGHT JOIN Orders o ON p.P_Id = o.P_Id WHERE p.P_Id IS NULL ORDER BY p.LastName;
説明
このクエリは結果セットを生成します。問題文で説明されているものと同じです:
LastName | FirstName | OrderNo |
---|---|---|
Hansen | Ola | 22456 |
Hansen | Ola | 24562 |
Pettersen | Kari | 77895 |
Pettersen | Kari | 44678 |
Svendsen | Tove | 34764 |
以上がLEFT JOIN と RIGHT JOIN を使用して MySQL で FULL JOIN をエミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。