2

我想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。有什么错误请告诉我我还是学生。我怎样才能在这里执行 FULL JOIN ?

谢谢你!

4

1 回答 1

5

为了FULL JOIN在 mysql 中进行模拟,您需要UNION从两个表中获取 Right Join 和 Left Join 的结果

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
于 2012-11-28T05:15:49.377 回答