In Oracle entspricht die „with as“-Anweisung dem Erstellen einer temporären Tabelle und dem Platzieren der Zwischenergebnisse in einer Anweisung im temporären Tabellenbereich. Sie können diese Anweisung auch zum Definieren mehrerer temporärer Tabellen verwenden. Die Syntax lautet „with temptablename“. ([Feldliste]) als (wählen ...)“.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, Oracle 11g-Version, Dell G3-Computer.
Die with as-Klausel in der Oracle-Abfrage entspricht dem Erstellen einer temporären Tabelle und dem Platzieren einiger Zwischenergebnisse in einer Anweisung im temporären Tabellenbereich. Benennen Sie die Unterabfrage in der Abfrage und stellen Sie sie an den Anfang der SELECT-Anweisung. Die Syntax lautet wie folgt:
with temptablename([字段列表]) as (select ...) select ...
Sie können auch die with as-Klausel verwenden, um mehrere temporäre Tabellen zu definieren. Beim Erstellen mehrerer temporärer Tabellen können die nachfolgenden temporären Tabellen auf die zuvor erstellten temporären Tabellen zugreifen. Die Syntax lautet wie folgt:
with temptablename1([字段列表]) as (select ...), temptablename2([字段列表]) as (select ...) select ...
Beschreibung:
(1) Die mit der with as-Klausel erstellte temporäre Tabelle wird gelöscht, nachdem die Abrufabfrage abgeschlossen ist.
(2) Beim Erstellen mehrerer temporärer Tabellen können diese auf die zuvor erstellten temporären Tabellen zugreifen.
(3) Wenn eine Abfrage mehrere identische Unterabfragen hat, wird im Allgemeinen die with as-Klausel verwendet, da die Ergebnisse der Unterabfrage in der temporären Speichertabelle gespeichert werden und die Ausführungseffizienz hoch ist.
Verwendungsbeispiel
Fragen Sie ab, welche Abteilungen insgesamt höher sind als das Durchschnittsgehalt aller Abteilungen:
1. Ohne as
Die Code- und Abfrageergebnisse lauten wie folgt:
SELECT deptno,total_sal FROM (SELECT deptno,sum(sal) as total_sal FROM employee GROUP BY deptno) temp1 WHERE total_sal>( SELECT avg(total_sal) FROM (SELECT deptno,sum(sal) as total_sal FROM employee GROUP BY deptno) 10:46:44 10 ); DEPTNO TOTAL_SAL ---------- ---------- 20 5701632000 Elapsed: 00:00:02.33
In diesem Beispiel ist es In einer Abfrage erscheinen zwei identische Unterabfragen.
2. Verwendung mit as
10:45:47 SQL> WITH tempA AS (SELECT deptno,sum(sal) as total_sal FROM employee GROUP BY deptno) SELECT * FROM tempA WHERE total_sal>( SELECT AVG(total_sal) FROM tempA 10:46:02 10 ); DEPTNO TOTAL_SAL ---------- ---------- 20 5701632000 Elapsed: 00:00:01.42
Aus dem Vergleich der beiden Abfragen geht hervor, dass die Verwendung der with as-Klausel die Abfrageanweisung vereinfachen und die Abfragegeschwindigkeit verbessern kann.
Empfohlenes Tutorial: „Oracle Video Tutorial“
Das obige ist der detaillierte Inhalt vonWas ist die Verwendung von with wie in Oracle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!