Rumah > pangkalan data > tutorial mysql > Bagaimana untuk menggunakan dengan seperti dalam pernyataan sql

Bagaimana untuk menggunakan dengan seperti dalam pernyataan sql

醉折花枝作酒筹
Lepaskan: 2021-08-06 18:03:49
ke hadapan
3717 orang telah melayarinya

WITH AS phrase, juga dipanggil bahagian subquery, boleh mentakrifkan serpihan SQL yang akan digunakan oleh keseluruhan pernyataan SQL. Ia boleh menjadikan pernyataan SQL lebih mudah dibaca, atau ia boleh digunakan sebagai bahagian yang menyediakan data di bahagian berlainan UNION ALL.

Bagaimana untuk menggunakan dengan seperti dalam pernyataan sql

– untuk satu alias

with tmp as (select * from tb_name)
Salin selepas log masuk

– untuk berbilang alias

with
tmp as (select * from tb_name),
tmp2 as (select * from tb_name2),
tmp3 as (select * from tb_name3),
…
Salin selepas log masuk

– setara dengan membina Jadual e-sementara

with e as (select * from scott.emp e where e.empno=7499)
select * from e;
Salin selepas log masuk

– bersamaan dengan membina e dan d jadual sementara

with
e as (select * from scott.emp),
d as (select * from scott.dept)
select * from e, d where e.deptno = d.deptno;
Salin selepas log masuk

Sebenarnya, ia adalah untuk meletakkan banyak pernyataan sql yang berulang kali digunakan dengan sebagai dan mengambil alias , anda boleh menggunakannya dalam pertanyaan seterusnya, yang memainkan peranan pengoptimuman dalam kumpulan besar pernyataan SQL dan jelas.

Dengan sebagai penggunaan untuk memasukkan data ke dalam jadual

insert into table2
with
s1 as (select rownum c1 from dual connect by rownum <= 10),
s2 as (select rownum c2 from dual connect by rownum <= 10)
select a.c1, b.c2 from s1 a, s2 b where…;
Salin selepas log masuk

pilih s1.sid, s2.sid daripada s1, s2 perlu mempunyai syarat yang berkaitan, jika tidak, hasilnya akan menjadi produk Cartesian .

dengan yang setara dengan paparan maya.

dengan sebagai frasa, juga dipanggil pemfaktoran subkueri, membolehkan anda melakukan banyak perkara, mentakrifkan serpihan sql, yang akan digunakan oleh keseluruhan pernyataan sql. Kadang-kadang, ia adalah untuk menjadikan pernyataan SQL lebih mudah dibaca, atau mungkin di bahagian kesatuan yang berlainan semuanya sebagai bahagian yang menyediakan data.

Terutama berguna untuk kesatuan semua. Kerana setiap bahagian kesatuan semua mungkin sama, tetapi jika setiap bahagian dilaksanakan sekali, kosnya terlalu tinggi, jadi anda boleh menggunakan dengan sebagai frasa, yang hanya perlu dilaksanakan sekali. Jika nama jadual yang ditakrifkan oleh frasa dengan sebagai dipanggil lebih daripada dua kali, pengoptimum akan secara automatik meletakkan data yang diperolehi dengan sebagai frasa ke dalam jadual temp Jika ia hanya dipanggil sekali, ia tidak akan. Gesaan terwujud memaksa data dalam dengan sebagai frasa untuk dimasukkan ke dalam jadual sementara global. Banyak pertanyaan boleh dipercepatkan dengan cara ini.

with
sql1 as (select to_char(a) s_name from test_tempa),
sql2 as (select to_char(b) s_name from test_tempb where not exists (select s_name from sql1 where rownum=1))
select * from sql1
union all
select * from sql2
union all
select ‘no records’ from dual
where not exists (select s_name from sql1 where rownum=1)
and not exists (select s_name from sql2 where rownum=1);
Salin selepas log masuk

Kelebihan pernyataan WITH:

(1) kebolehbacaan SQL dipertingkatkan. Sebagai contoh, berikan nama yang bermakna kepada yang khusus dengan subkueri, dsb.

(2). Subkueri dengan hanya dilaksanakan sekali, dan hasilnya disimpan dalam ruang jadual sementara pengguna, yang boleh dirujuk beberapa kali untuk meningkatkan prestasi.

Contoh: Semasa proses mengimport EXCEL, kadangkala data perlu disimpan dalam jadual sementara Pada kali seterusnya import dilakukan, data dalam jadual sementara akan dikosongkan , kadangkala Jika terdapat masalah konkurensi, dua pengguna mungkin mengendalikan data masing-masing secara berasingan, jadi ia boleh menyebabkan kekeliruan, bagaimanapun, anda boleh menggunakan fungsi WITH dan pernyataan UNION untuk menyambung pernyataan SQL dan menyimpannya dalam SESSION untuk mengeksport maklumat ralat, anda boleh menggunakan data binaan Penyata ini.

Cadangan berkaitan: "tutorial mysql"

Atas ialah kandungan terperinci Bagaimana untuk menggunakan dengan seperti dalam pernyataan sql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sql
sumber:csdn.net
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan