Dalam Oracle, pernyataan "dengan sebagai" adalah bersamaan dengan mencipta jadual sementara dan meletakkan hasil perantaraan dalam pernyataan dalam ruang jadual sementara Anda juga boleh menggunakan pernyataan ini untuk mentakrifkan berbilang jadual sementara ialah "dengan temptablename([field list]) as (select ...)".
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi Oracle 11g, komputer Dell G3.
Klausa dengan sebagai dalam pertanyaan Oracle adalah bersamaan dengan mencipta jadual sementara dan meletakkan beberapa hasil perantaraan dalam pernyataan dalam ruang jadual sementara. Namakan subquery dalam pertanyaan dan letakkannya di hadapan pernyataan SELECT. Sintaksnya adalah seperti berikut:
with temptablename([字段列表]) as (select ...) select ...
Anda juga boleh menggunakan klausa dengan sebagai untuk mentakrifkan berbilang jadual sementara Apabila mencipta berbilang jadual sementara, jadual sementara seterusnya boleh mengakses jadual sementara yang dibina sebelumnya. Sintaks adalah seperti berikut:
with temptablename1([字段列表]) as (select ...), temptablename2([字段列表]) as (select ...) select ...
Penerangan:
(1) Jadual sementara yang dibuat menggunakan klausa dengan sebagai akan dihapuskan selepas pertanyaan pengambilan selesai.
(2) Apabila mencipta berbilang jadual sementara, yang terakhir boleh mengakses jadual sementara yang telah dibina sebelum ini.
(3) Apabila pertanyaan mempunyai berbilang subkueri yang sama, klausa dengan sebagai biasanya digunakan, kerana hasil subkueri disimpan dalam jadual sementara memori dan kecekapan pelaksanaan adalah tinggi.
Contoh penggunaan
Pertanyaan jabatan mana yang mempunyai jumlah gaji lebih tinggi daripada purata gaji semua jabatan:
1 >
Kod dan hasil pertanyaan adalah seperti berikut: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
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
Tutorial Video Oracle"
Atas ialah kandungan terperinci Apakah kegunaan dengan seperti dalam oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!