【问题标题】:Left join using a temporary column使用临时列左连接
【发布时间】:2021-09-16 03:15:08
【问题描述】:

我想在两个表上执行left join,但第二个表没有必填列。 因此需要一个临时列(第二个表中两个列值的连接)来进行左连接。

select a.name, a.number, b.id, b.sub_num
from tableA a left join
     tableB b
     on a.number = (select concat(id,'-',Cast(sub_num as varchar)) as tempcol from tableB);

显然这显示错误:

SUBQUERY_MULTIPLE_ROWS: Scalar sub-query has returned multiple rows.

但我不需要此 tempcol 显示在主查询中,也不需要将其保存为此处任何表中的新列。

在临时列上进行左连接的更好方法是什么?

【问题讨论】:

    标签: sql join left-join amazon-athena temporary


    【解决方案1】:

    join 不需要子查询。只需使用表达式:

    select a.name, a.number, b.id, b.sub_num
    from tableA a left join
         tableB b
         on a.number = concat(id, '-', sub_num);
    

    如果您愿意,可以使用子查询:

    select . . .
    from tableA a left join
         (select b.*, concat(id, '-', sub_num) as tempcol
          from tableB b
         ) b
         on a.number = b.tempcol;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-11
      • 2016-03-11
      • 2011-08-17
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      相关资源
      最近更新 更多