Aktualisierung Mehrerer Spalten aus einer anderen Tabelle - Brauche Oracle-format
Ich habe ein Skript, das ich in SQL-Server aber ich brauche, um zu konvertieren, um eine Oracle-format. Kann mir jemand helfen?
UPDATE PERSONS P SET
P.JOBTITLE=TE.JOBTITLE,
P.LAST_NAME=TE.LAST_NAME,
P.FIRST_NAME=TE.FIRST_NAME,
P.DBLOGIN_ID=TE.DBLOGIN_ID,
P.EMAIL_ID=TE.EMAIL_ID,
P.USERLEVEL=TE.USERLEVEL,
P.FACILITY_ID=TE.FACILITY_ID,
P.SUPERVISOR=TE.SUPERVISOR,
P.DEPARTMENT=TE.DEPARTMENT,
P.WINLOGINID=TE.WINLOGINID
FROM TEMP_ECOLAB_PERSONS TE
WHERE P.PERSON=TE.PERSON;
--Aus dem Artikel unten, ich kam mit der folgenden Anweisung. Es funktioniert immer noch nicht leider:
UPDATE (SELECT P.JOBTITLE, P.LAST_NAME, P.FIRST_NAME, P.DBLOGIN_ID, P.EMAIL_ID,
P.USERLEVEL, P.FACILITY_ID, P.SUPERVISOR, P.DEPARTMENT,
TE.JOBTITLE, TE.LAST_NAME, TE.FIRST_NAME, TE.DBLOGIN_ID, TE.EMAIL_ID,
TE.USERLEVEL, TE.FACILITY_ID, TE.SUPERVISOR, TE.DEPARTMENT
FROM PERSONS P, TEMP_ECOLAB_PERSONS TE WHERE P.PERSON=TE.PERSON)
SET
P.JOBTITLE=TE.JOBTITLE,
P.LAST_NAME=TE.LAST_NAME,
P.FIRST_NAME=TE.FIRST_NAME,
P.DBLOGIN_ID=TE.DBLOGIN_ID,
P.EMAIL_ID=TE.EMAIL_ID,
P.USERLEVEL=TE.USERLEVEL,
P.FACILITY_ID=TE.FACILITY_ID,
P.SUPERVISOR=TE.SUPERVISOR,
P.DEPARTMENT=TE.DEPARTMENT;
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, wie ich es tun würde. Es ist vielleicht nicht die beste Leistung, aber es funktioniert.
Dem obigen Skript wird aktualisiert die Informationen in PERSONS_TMP Tabelle mit Daten aus der Tabelle PERSONEN. Ich glaube, in Ihrem Fall, Sie wollen, dass es die andere Weise herum. Also, bitte stellen Sie sicher, dass Sie die notwendigen änderungen vornehmen, bevor das Skript ausgeführt.
Können Sie hinzufügen", WENN Sie NICHT ABGESTIMMT ist, DANN.... "Klausel für die obige SQL in Fall, dass Sie brauchen, um neue Datensätze einfügen, wenn es nicht vorhanden ist.
Beachten Sie, dass wenn es gibt andere Zeilen, die vorhanden in den Personen, die nicht in temp_ecolab_persons, der diese zusätzlichen Zeilen in der person-Tabelle auf null gesetzt werden (oder verursachen könnte, schlägt die Anweisung fehl mit nicht-null-constraint-Fehler durch das update oben, so ist dies der Fall, müssen Sie möglicherweise auch eine where-Klausel in der update-Anweisung zu beschränken, diese, z.B. wenn ich weiß die email_id Feld auf einige Datensätze aber nicht auf andere, ich kann limit das update nur auf diejenigen, die Zeilen wie folgt