【问题标题】:Redshift update innerjoinRedshift 更新内连接
【发布时间】:2019-10-23 08:49:38
【问题描述】:

我想更新新状态

此选择有效:

select cd.referenceid,  cd.productstate , cd.date, dateadd(day,-1,cd.date) as gestern, cd2.date as cd2date, cd2.productstate, cd.statenew
from public.contractdaily  cd
left join public.contractdaily cd2 on cd2.contractid = cd.contractid and dateadd(day,-1,cd.date) = cd2.date
where cd.productstate != cd2.productstate and cd.referenceid = 201663

这不起作用

update contractdaily  set stateNew = 1
from
(select  cd.stateNew ,cd.referenceid,  cd.productstate as cd1productstate , cd.date, dateadd(day,-1,cd.date) as gestern, 
cd2.date as cd2date, cd2.productstate as cd2productstate, cd.referenceid as cdreferenceid
from contractdaily  cd
left join contractdaily cd2 on cd2.contractid = cd.contractid and dateadd(day,-1,cd.date) = cd2.date )foo
where contractdaily.productstate !=  foo.cd2productstate  and contractdaily.referenceid = 201663;

错误:亚马逊无效操作:目标表必须是一部分 等值连接谓词; [SQL 状态=XX000,数据库错误代码=500310]

【问题讨论】:

    标签: sql-update inner-join amazon-redshift


    【解决方案1】:

    也许这会有所帮助:

    update contractdaily
    set stateNew = 1
    where referenceid = 201663
    and productstate not in
    (
    select cd2.productstate 
    from contractdaily cd
    left join contractdaily cd2 on cd2.contractid = cd.contractid and dateadd(day,-1,cd.date) = cd2.date
    );
    

    【讨论】:

      猜你喜欢
      • 2016-12-11
      • 2013-08-23
      • 2014-08-19
      • 1970-01-01
      • 1970-01-01
      • 2020-06-14
      • 2014-02-26
      • 2018-06-04
      • 2022-01-16
      相关资源
      最近更新 更多