如何使用 Amazon Redshift 中另一个表的值更新列

Pat*_*bug 3 mysql sql postgresql amazon-redshift

我有 2 张桌子:

表“A”:

Old_eid    new_eid
<null>     <null>
a          <null>
b          <null>
c          <null>
Run Code Online (Sandbox Code Playgroud)

表“B”:

eid1    eid2
a         d
b         e
c         f
Run Code Online (Sandbox Code Playgroud)

我想更新表“A”如下:

Old_eid    new_eid
<null>     <null>
a             d
b             e
c             f
Run Code Online (Sandbox Code Playgroud)

我提出了以下查询,但它给了我一个错误:

UPDATE A
   SET new_eid = (SELECT eid2
                  FROM A a
                    JOIN B b ON a.old_eid = b.eid1)
WHERE old_eid IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

但它给了我以下错误:

UPDATE A
       SET new_eid = (SELECT eid2
                      FROM A a
                        JOIN B b ON a.old_eid = b.eid1)
    WHERE old_eid IS NOT NULL

[Amazon](500310) Invalid operation: Invalid Query: 
Details: 
 -----------------------------------------------
  error:  Invalid Query: 
  code:      8001
  context:   single-row subquery returns more than one row
  query:     967978
  location:  8.cpp:78
  process:   padbmaster [pid=15160]
  -----------------------------------------------;

Execution time: 0.35s
1 statement failed.
Run Code Online (Sandbox Code Playgroud)

我可以理解该错误,因为它导致了不止一行,但我不确定如何获得我想要的内容。

如何替换这些值?任何帮助将非常感激。

Pat*_*bug 5

我能够使用以下方法来做到这一点:

UPDATE A
   SET new_eid = eid2
FROM B cm 
WHERE cm.eid1= old_eid
and old_eidIS NOT NULL
Run Code Online (Sandbox Code Playgroud)