如何使用联接本身更新表

时间:2019-04-08 17:09:08

标签: sql vertica

我正在尝试更新表中的一列,使其自身进行联接以过滤出数据。

最初,这段代码是针对SQL Server的,我尝试对其进行更改,使其在Vertica中运行。我收到此错误: ERROR: Syntax error at or near "inner"

update REPORT.sub_2018_ALL a 
    inner join REPORT.sub_2018_ALL p 
    on a.MBR_ID= p.MBR_ID and a.NAME = p.NAME
set RESULT = 'F'
where p.STATUS_REASON = 'Submitted' and a.REVIEW_RESULT is null

我不确定这是由于别名还是在表自身联接时无法更新。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我认为您想要这样的东西:

update REPORT.sub_2018_ALL a 
    set RESULT = 'F'
where a.REVIEW_RESULT is null and
      exists (select 1
              from REPORT.sub_2018_ALL p 
              where a.MBR_ID = p.MBR_ID and
                    a.NAME = p.NAME and
                    p.STATUS_REASON = 'Submitted'
             );

为记录起见,您的原始语法在SQL Server上不起作用,尽管可能在MySQL上起作用。