使用左連接和右連接模擬 MySQL FULL JOIN
MySQL 本身不支援 FULL JOIN 操作。但是,使用 LEFT JOIN 和 RIGHT JOIN 的組合可以獲得類似的結果。
理解問題
目標是傳回一個結果集,其中包括來自兩個表(Persons 和Orders)的所有記錄,即使任一表中的匹配字段(P_Id) 為空。
解決方案
要模擬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 |
以上是如何使用左側連接和右側連接在 MySQL 中模擬 FULL JOIN?的詳細內容。更多資訊請關注PHP中文網其他相關文章!