无法处理MySQL FULL JOIN查询

时间:2012-11-28 05:08:38

标签: mysql sql database

我希望FULL JOIN跟随两个表

表1:人员

P_Id      Name            
 1         A        
 2         B       
 3         C
 4         D
 5         E 

表2:发票

  Id       P_Id            
 111        3        
 112        3       
 113        1
 114        1
 115       15 

我使用了这个查询:

SELECT Persons.Name, Persons.P_Id, Invoice.Id
FROM Persons
FULL JOIN Invoice
ON Persons.P_Id=Invoice.P_Id
ORDER BY Persons.Name

但这会产生错误

  

“字段列表”

中的未知列“Persons.Name”

MySQL服务器版本是5.5.19,我使用Microsoft Windows7中的命令行客户端

INNER JOIN,RIGHT JOIN和LEFT JOIN为我工作,但我无法执行FULL JOIN。有什么错误,请告诉我,我还是学生。我怎样才能在这里执行完全加入?

谢谢!

1 个答案:

答案 0 :(得分:5)

为了在mysql中模拟FULL JOIN,你需要UNION来自两个表的右连接和左连接的结果

SELECT  Persons.Name, Persons.P_Id, Invoice.Id
FROM    Persons
        LEFT JOIN Invoice
            ON Persons.P_Id=Invoice.P_Id
UNION
SELECT  Persons.Name, Persons.P_Id, Invoice.Id
FROM    Invoice
        LEFT JOIN Persons
            ON Persons.P_Id=Invoice.P_Id