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

标签 mysql sql postgresql amazon-redshift

我有 2 个表:

表“A”:

Old_eid    new_eid
<null>     <null>
a          <null>
b          <null>
c          <null>

表“B”:

eid1    eid2
a         d
b         e
c         f

我想按如下方式更新表“A”:

Old_eid    new_eid
<null>     <null>
a             d
b             e
c             f

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

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

但它给了我以下错误:

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.

我能理解这个错误,因为它导致多行,但我不确定如何得到我想要的。

如何替换这些值?任何帮助将不胜感激。

最佳答案

我能够使用:

UPDATE A
   SET new_eid = eid2
FROM B cm 
WHERE cm.eid1= old_eid
and old_eidIS NOT NULL

关于mysql - 如何使用 Amazon Redshift 中另一个表的值更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46288044/

相关文章:

mysql触发器(更新后插入字段)

php - 更改日期并使用 mysql 将其发布回 phpmyadmin

XML 中动态节点的 SQL 查询

mysql - FIND_IN_SET 用于 Mysql 中的部分字符串

php - 使用 MYSQL 的无限类别/子类别

php - laravel 中不区分大小写

mysql - SQL - 获取地球上人们的认证总数(3 个单独的表)

SQL 对数据进行分页,其中分页从给定的主键开始

sql - PostgreSQL 上的同义词支持

ruby-on-rails - rbenv、 Homebrew 软件和 postgres9.3 : pg upgrade form 9. 2 损坏了 pg