so aktualisieren Sie mehrere Zeilen in oracle
Möchte ich zum aktualisieren mehrerer Zeilen mit unterschiedlichen Werten für alle anderen Datensätze, aber habe keine Ahnung, wie das geht, ich verwende folgenden sql-update für den einzelnen Datensatz, sondern ich habe 200 plus Datensätze zu aktualisieren
update employee
set staff_no = 'ab123'
where depno = 1
ich 50 dep und innerhalb dieser dep muss ich update-200-plus-Mitarbeiter nicht. jede Idee.
In dem moment, wenn ich einfach eine
select * from Departments
kann ich sehen Liste aller Mitarbeiter, die Bedürfnisse der Mitarbeiter wird keine Aktualisierung.
UPDATE person
SET staff_no =
CASE person_no
WHEN 112 THEN 'ab123'
WHEN 223 THEN 'ab324'
WHEN 2343 THEN 'asb324'
and so on.....
END
zum Beispiel, wenn depno =1 gesetzt staffno = ab123 ...... wenn depno = 2 gesetzt staffno =ab321
Sagen Sie, Sie brauchen, um zu aktualisieren, 200 records, alle haben unterschiedliche Werte? Gibt es eine Möglichkeit zu berechnen, diese Werte?
ich habe rund 150 person_id ist alles anders Aussehen, ich brauche zu aktualisieren staff_no gegen die person-id, also kurz 150 person_no und 150 staff_no ist
Erstellen Sie eine sqlfiddle mit einigen Beispiel-DDL-und Datumsanzeige Beziehung, wenn die Antworten nicht befriedigen.
keine Panik. auch wenn es keine test-db, wo können Sie Holen Sie sich bequem mit der Technik, nichts willbe verändert in Ihrem prod db bis Sie
Sagen Sie, Sie brauchen, um zu aktualisieren, 200 records, alle haben unterschiedliche Werte? Gibt es eine Möglichkeit zu berechnen, diese Werte?
ich habe rund 150 person_id ist alles anders Aussehen, ich brauche zu aktualisieren staff_no gegen die person-id, also kurz 150 person_no und 150 staff_no ist
Erstellen Sie eine sqlfiddle mit einigen Beispiel-DDL-und Datumsanzeige Beziehung, wenn die Antworten nicht befriedigen.
keine Panik. auch wenn es keine test-db, wo können Sie Holen Sie sich bequem mit der Technik, nichts willbe verändert in Ihrem prod db bis Sie
COMMIT
- probieren Sie es aus für 2 kleine Abteilungen zunächst die überprüfung der Ergebnisse, ausstellen ROLLBACK
.InformationsquelleAutor srk786 | 2015-02-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie in der Lage sein zu verwenden
MERGE
Anweisung, es zu tun in einem einzigen Schuss. Aber die Erklärung wird ziemlich groß sein:InformationsquelleAutor dasblinkenlight
verwenden Sie einen case-Ausdruck
Sie bieten Platz für alle möglichen
depno
Werte in einem einzigen case-Ausdruck. Ich würde empfehlen, dieELSE
Zweig zu halten, wird der alte Wert zur Absicherung gegen unerwartetedepno
s.wird es möglich sein, wenn Sie können schreiben Sie bitte die sql-Abfrage/ case-Anweisung, wo ich 150 verschiedene Personen-id 's und ich möchte aktualisieren 150 staff_no gegen die id' s, ich werde dabei sein, in person_id und Mitarbeiter Anzahl manuell als update in einer Abfrage
sorry sir, ich gerne Menschen helfen, aber ich werde das nicht tun Ihre Arbeit für Sie ;-). Noch mehr so, wie ich bin nicht so sicher über Ihre Daten-Modell.
bitte haben Sie einen Blick auf meine Frage. 2. Teil werde ich, um es auszuführen. sieht es ok
InformationsquelleAutor collapsar
Wenn Sie zwei Tabellen wie:
Können Sie
UPDATE
- Anweisung wie folgt:InformationsquelleAutor Upendra Hukeri
Bedingte aktualisieren, könnten Sie mehrere update-Anweisungen, oder verwenden Sie FALL - Anweisung in der SET-Klausel.
Etwas wie
Ich wünschte, Sie versucht, zu suchen für eine ähnliche Frage auf dieser Seite, gab es kürzlich eine Frage und diese war meine Antwort.
InformationsquelleAutor Lalit Kumar B