Ich habe dieses Problem mit PL/SQL. Ich habe 2 Tabellen mit derselben Spalte. Einer ist für den aktuellen Lauf, der andere für die Geschichte.Aktualisieren Sie mehrere Werte mit where exists Klausel
Bei jedem Lauf muss ich den Verlauf nur mit Werten aktualisieren, die ich im aktuellen Lauf gefunden habe.
Aktuelle Tabelle
| ID |__NAME__|__SURNAME__|__CITY__|
| 10000 | ABC | CDE | IT |
| 10001 | EFG | ASD | EN |
| 10005 | | | |
Geschichte Tabelle
| ID |__NAME__|__SURNAME__|__CITY__|
| 10000 | FFF | AAA | EN |
| 10001 | DDD | BBB | GR |
| 10005 | JKO | POI | GR |
| 10006 | DLK | MIN | IT |
Wie Sie sehen können, Aktuelle Tabelle hat einen Datensatz mit allen leeren Werten, außer ID = 10005. Also, ich muss Geschichte (Name, Vorname, Stadt) von der aktuellen Tabelle aktualisieren, wo ID in der aktuellen Tabelle vorhanden ist und Name, Nachname und Stadt sind nicht null.
Ich habe versucht, mit
UPDATE HISTORY
SET (NAME, SURNAME, CITY) = (
SELECT NAME, SURNAME, CITY
FROM CURRENT temp
WHERE temp.name is not null and temp.id = history.id
)
WHERE exists (
SELECT NAME, SURNAME, CITY
FROM CURRENT temp
WHERE temp.name is not null and temp.id = history.id
);
Aber es funktioniert nicht. Ich muss unterstreichen, dass wenn Name in der aktuellen Tabelle null ist, dann Nachname und Stadt auch null sind.
Sie MySQL oder Postgres? –
PLSQL- Ich werde meine Frage bearbeiten –
Meinst du Oracle SQL? – Mottor