在mysql中的同一表中加入联接的子查询

时间:2018-12-10 13:17:32

标签: mysql join subquery

我正在尝试使用join和subquery从表中获取一些数据。我的情况是:我有一个表表ABC ,其结构如图所示

ID   NAME  PARENT   RELATION

我需要身份证,姓名,父母姓名和配偶姓名(如果不是配偶的成员)。我尝试过的查询是:

SELECT E1.name AS memname,
       E2.name AS parentname 
FROM ABC AS E1 
LEFT OUTER JOIN ABC AS E2 ON E2.id = E1.parent_id  
where E1.relation != "Spouse"

此查询返回成员的id,名称和父名称的正确行。现在,我需要重写查询,以便在有成员的情况下也获得配偶的名字。预期输出为:

enter image description here

我尝试使用子查询来选择配偶名称,但这是错误的。谁能帮我这个?预先感谢

1 个答案:

答案 0 :(得分:2)

您可以再进行一次自我加入以获得配偶的名字。

SELECT E1.name AS memname,
       E2.name AS parentname,
       E3.name AS spouse 
FROM ABC AS E1 
LEFT OUTER JOIN ABC AS E2 ON E2.id = E1.parent_id  
LEFT OUTER JOIN ABC AS E3 ON E3.parent_id = E1.id AND 
                             E3.relation = 'Spouse'   
where E1.relation <> 'Spouse'