【问题标题】:Use value from one query into the second one将一个查询的值用于第二个查询
【发布时间】:2022-11-30 17:25:57
【问题描述】:

如何将一个查询中的值用于第二个查询。我尝试使用别名“爸爸”,但我读到执行顺序使别名对第二个查询不可用。

实现以下目标的适当方法是什么?

select id, name, parent_id as papa, (select name from people where id = papa)
from people;

【问题讨论】:

  • 这看起来真的很奇怪。我想当您将示例数据和预期结果显示为表格时,您会得到更好的答案。很难相信这种子查询是正确的。
  • 您不能引用在同一个 SELECT 子句中创建/命名的列。要么有派生表或 cte,要么使用 parent_id。

标签: sql postgresql


【解决方案1】:

我会为此使用自连接:

select p.id, 
       p.name, 
       p.parent_id as papa_id
       papa.name as papa_name
from people p
  left join people papa on p.parent_id = papa.id

【讨论】:

  • 错误:“papa”处或附近的语法错误第 4 行:papa.name as papa_name
【解决方案2】:

使别名更早

select id, name, papa, (select name from people where id = papa)
from (select id, name, parent_id as papa people);

【讨论】:

    猜你喜欢
    • 2015-07-23
    • 2021-01-11
    • 2020-03-09
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 2019-03-12
    • 1970-01-01
    相关资源
    最近更新 更多