2017-09-18 5 views
0

アマゾンで別のテーブルからの値を使用して、カラム更新する方法:私は2つのテーブル持っている赤方偏移

テーブル 'A':

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

テーブル 'B':

eid1 eid2 
a   d 
b   e 
c   f 

Iをテーブル '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. 

を行は、私は私が欲しいものを得る方法をよく分かりません。

これらの値を置き換えるにはどうすればよいですか?どんな助けでも大歓迎です。

答えて

1

私はこの使用して行うことができた:私はアマゾン赤方偏移を使用したことがないが、SQLで、このコード

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

を:

(SELECT eid2 FROM A a JOIN B b ON a.old_eid = b.eid1) 

がAにすべての行が返されますが、すべてのためにBに参加しました行を更新する。

次のようなものを使用する必要があります

UPDATE A 
    SET new_eid = (SELECT eid2 
        FROM B b WHERE A.old_eid = b.eid1) 
WHERE old_eid IS NOT NULL 
関連する問題