简体   繁体   English

Redshift 更新内部连接

[英]Redshift update innerjoin

I want to update newState我想更新 newState

This select Works:这 select 作品:

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

This doesnt work这不起作用

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;

Error: Amazon Invalid operation: Target table must be part of an equijoin predicate;错误:亚马逊无效操作:目标表必须是等值连接谓词的一部分; [SQL State=XX000, DB Errorcode=500310] [SQL 状态=XX000,数据库错误代码=500310]

Maybe this will help:也许这会有所帮助:

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
);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM