mysql - 无法处理 MySQL FULL JOIN 查询

标签 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

但这会产生错误

Unknown column 'Persons.Name' in 'Field list'

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

INNER JOIN、RIGHT JOIN 和 LEFT JOIN 对我有用,但我无法执行 FULL JOIN。错误是什么请告诉我我还是个学生。我如何在这里执行 FULL JOIN?

谢谢!

最佳答案

为了在mysql中模拟FULL JOIN,需要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

关于mysql - 无法处理 MySQL FULL JOIN 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13598221/

相关文章:

ASP.NET LINQ 数据库供应商

mysql - 向mysql中的列添加外键不会创建外键

mysql - ORDER BY 使用 UNION 创建的人工行

MYSQL - 语法错误

mysql - 检查登录详细信息(用户名和密码)的最佳查询

java - 使用 SQLite 数据库时我的 Activity 无法打开

mysql - 基数混淆 - 状态字段(50 个状态)索引的基数是否应该为 50?

sql - 如果我将 NUMERIC 的列定义太宽泛,是否会牺牲磁盘空间?

sql - PostgreSQL - 获取与一个查询的关系的第一个和最后一个记录

database - 我如何知道 Oracle 中的表是否存在碎片?