Beute an! ...Ich habe etwas sehr Wichtiges gefunden, das meine Behauptung bestätigt...
Unterabfragen in anderen DML-Anweisungen
Unterabfragen können in DML-Anweisungen verwendet werden wie INSERT , UPDATE , DELETE ,
と MERGE . Es folgen einige Beispiele für Unterabfragen in DML
Erklärungen.
So aktualisieren Sie das Gehalt aller Mitarbeiter auf das Höchstgehalt in der
die entsprechende Abteilung (korrelierte Unterabfrage):
UPDATE employees e1
SET salary = (SELECT MAX(salary)
FROM employees e2
WHERE e1.department_id = e2.department_id);
Löschen der Datensätze von Arbeitnehmern, deren Gehalt unter dem Durchschnitt liegt
Gehalt in der Abteilung (unter Verwendung einer korrelierten Unterabfrage):
DELETE FROM employees e
WHERE salary < (SELECT AVG(salary) FROM employees
WHERE department_id = e.department_id);
So fügen Sie mithilfe einer Unterabfrage Datensätze in eine Tabelle ein:
INSERT INTO employee_archive
SELECT * FROM employees;
So geben Sie eine Unterabfrage in der VALUES-Klausel der INSERT-Anweisung an:
INSERT INTO departments
(department_id, department_name)
VALUES ((SELECT MAX(department_id)
+10 FROM departments), 'EDP');
Sie können auch eine Unterabfrage in den INSERT-, UPDATE- und DELETE-Anweisungen anstelle des Tabellennamens verwenden . Hier ist ein Beispiel:
DELETE FROM
(SELECT * FROM departments
WHERE department_id < 20)
WHERE department_id = 10;
INSERT INTO (SELECT department_id, department_name
FROM departments
WHERE department_id < 20)
VALUES (35, 'MARKETING');
1 Zeile erstellt.