2017-09-18 1 views
0

Ich habe 2 Tabellen:Wie eine Spalte mit den Werten aus einer anderen Tabelle in Amazon aktualisieren Redshift

Table 'A':

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

Table 'B':

eid1 eid2 
a   d 
b   e 
c   f 

I Ich möchte die Tabelle 'A' wie folgt aktualisieren:

kam ich mit der folgenden Abfrage, aber es gibt mir eine Fehlermeldung:

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 

Aber es gibt mir die folgende Fehlermeldung:

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. 

ich den Fehler verstehen kann, weil sie in mehr als einer wird sich ergeb Reihen, aber ich bin mir nicht sicher, wie ich bekommen soll, was ich will.

Wie ersetze ich diese Werte? Jede Hilfe würde sehr geschätzt werden.

Antwort

1

konnte ich dies tun mit:

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

Ich habe nie Amazon RedShift verwendet, aber in SQL, dieser Code:

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

werden alle Zeilen auf eine Rückkehr trat für jeden nach B Zeile aktualisiert werden.

Sie sollten so etwas wie verwenden:

UPDATE A 
    SET new_eid = (SELECT eid2 
        FROM B b WHERE A.old_eid = b.eid1) 
WHERE old_eid IS NOT NULL 
Verwandte Themen