代码之家  ›  专栏  ›  技术社区  ›  ziggystar

如何在嵌套查询中访问别名表的字段?

  •  0
  • ziggystar  · 技术社区  · 6 年前

    以下查询无效(postgre)SQL:

    select x.name as child_name, parents.parent.name as parent_name
    from X x
    join (
      select child, parent 
      from X child
      join X parent on child.parent = parent.id
    ) parents on parents.child.id = x.id;
    

    parents 在外部查询中?

    我只知道可以在嵌套查询中选择单个列,并在外部查询中访问这些列,如下所示。但这不是我想要的,因为显式导出所有列很麻烦。

    select x.name as child_name, parents.parent_name as parent_name
    from X x
    join (
      select child.id as child_id, parent.name as parent_name
      from X child
      join X parent on child.parent = parent.id
    ) parents on parents.child_id = x.id;
    
    0 回复  |  直到 6 年前
        1
  •  0
  •   Gordon Linoff    6 年前

    可以使用横向连接:

    select x.name as child_name, parents.parent.name as parent_name
    from X x inner join lateral
         (select child, parent 
          from X child join
               X parent
               on child.parent = parent.id
          where child.id = x.id
         ) parents;