【问题标题】:subquery with join in same table in mysql在mysql中加入同一张表的子查询
【发布时间】:2019-05-11 09:40:14
【问题描述】:

我正在尝试使用连接和子查询从我的表中获取一些数据。我的场景是:我有一个表table ABC,结构如图

如果任何成员不是配偶,我想要身份证、姓名、父母姓名和配偶姓名。我试过的查询是:

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、name 和 parentname 的正确行。现在我需要重写查询,以便如果任何成员有配偶,我也会得到配偶的姓名。预期输出为:

我尝试使用子查询来选择配偶姓名,但它是错误的。谁能帮我这个?提前致谢

【问题讨论】:

    标签: mysql join subquery


    【解决方案1】:

    您可以再进行一次自加入来获取配偶姓名。

    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'
    

    【讨论】:

    • 完美..!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    相关资源
    最近更新 更多