Rumah > pangkalan data > tutorial mysql > Apakah pernyataan pertanyaan bersarang mysql?

Apakah pernyataan pertanyaan bersarang mysql?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2022-03-09 15:44:16
asal
8509 orang telah melayarinya

Dalam mysql, pertanyaan bersarang mewakili pertanyaan yang menempatkan pernyataan SELECT lain dalam klausa WHERE atau klausa HAVING bagi pernyataan SELECT )".

Apakah pernyataan pertanyaan bersarang mysql?

Persekitaran pengendalian tutorial ini: sistem Windows 10, versi mysql8.0.22, komputer Dell G3.

Apakah pernyataan pertanyaan bersarang mysql

Pertanyaan bersarang

Definisi: Blok pernyataan pertanyaan dalaman (pilih-dari-mana) boleh disarangkan di dalam pertanyaan luar lain Di tempat klausa blok pertanyaan lapisan, pertanyaan luar juga dipanggil pertanyaan induk dan pertanyaan utama. Pertanyaan dalaman juga dipanggil subkueri, daripada pertanyaan. Subkueri biasanya tidak menggunakan susunan mengikut klausa dan hanya boleh mengisih hasil pertanyaan akhir.

Takrifan lain: Pertanyaan yang menyusun pernyataan SELECT lain dalam klausa WHERE atau klausa HAVING bagi pernyataan SELECT dipanggil pertanyaan bersarang, juga dikenali sebagai subkueri.

Cara pertanyaan bersarang berfungsi ialah: pertanyaan dalaman diproses terlebih dahulu, dari dalam ke luar Pertanyaan luar menggunakan hasil pertanyaan dalam bukan sahaja boleh digunakan dalam pilihan pertanyaan induk kenyataan. Ia juga boleh digunakan dalam memasukkan, mengemas kini, memadam kenyataan atau subquery lain.

1. Komposisi subkueri

1.

2. Piawaian daripada klausa yang mengandungi satu atau lebih nama jadual atau paparan.

3. Pilihan mana klausa.

4. Kumpulan pilihan mengikut klausa.

5. Pilihan mempunyai klausa.

2. Peraturan sintaks subkueri

1.

2. Tidak boleh memasukkan klausa pengiraan atau untuk.

3 Jika klausa atas juga dinyatakan, hanya susunan mengikut klausa boleh disertakan.

4. Subkueri boleh bersarang sehingga 32 tahap. Sesetengah pertanyaan mungkin tidak menyokong 32 tahap sarang.

5. Subkueri boleh digunakan di mana-mana sahaja ungkapan boleh digunakan, asalkan ia mengembalikan satu nilai.

6 Jika jadual hanya muncul dalam subkueri dan bukan dalam pertanyaan luar, lajur jadual tidak boleh disertakan dalam output.

3. Subkueri yang mengembalikan nilai

Apabila subkueri hanya mengembalikan satu nilai, anda boleh menggunakan operator perbandingan seperti =,, >=, <=, !=, dsb. Sertai pertanyaan kaya dengan subkueri. Contohnya adalah seperti berikut:

3.1 Subkueri ringkas

select name,age
from person
where age > ( select age
from person
where name = &#39;张三&#39;);
Salin selepas log masuk

3.2 seperti pertanyaan bersarang

select count(distinct(Tname)) --查询姓“张”的老师的个数
from Teacher
where Tname like &#39;张%&#39;;
Salin selepas log masuk

4. Subkueri yang mengembalikan set nilai

Jika subquery mengembalikan lebih daripada satu nilai, tetapi koleksi, anda tidak boleh menggunakan operator perbandingan secara langsung Anda boleh memasukkan MANA-MANA, BEBERAPA atau SEMUA antara operator perbandingan dan subquery. Hubungan kesetaraan boleh menggunakan operator IN.

4.1 dalam Pertanyaan Bersarang

Kata kunci dalam digunakan dalam klausa where untuk menentukan sama ada ungkapan pertanyaan berada dalam senarai berbilang nilai. Mengembalikan rekod yang memenuhi syarat dalam senarai dalam.

select name
from person
where countryid in ( select countryid
from country
where countryname = &#39;中国&#39;);
Salin selepas log masuk

4.2 beberapa pertanyaan bersarang

beberapa simbol operasi logik dalam sql, jika dalam satu siri perbandingan, beberapa nilai adalah Benar, maka hasilnya adalah Benar. Sintaks sesetengahnya ialah:

select name from person
where countryid = some ( select countryid from country    --用等号和以下查询到的值比较,如果与其中一个相等,就返回
where countryname = &#39;中国&#39;);
Salin selepas log masuk

4.3 semua pertanyaan bersarang

semuanya ialah operator logik dalam SQL Jika satu siri perbandingan adalah benar, maka hasilnya boleh menjadi benar.

select name from person
where countryid > all ( select countryid from country  --当countryid大于以下返回的所有id,此结果才为True,此结果才返回
where countryname = &#39;中国&#39;);
Salin selepas log masuk

4.4 wujud pertanyaan bersarang

wujud ialah simbol operasi logik dalam sql. Benar jika subquery mengembalikan set hasil. wujud mewakili maksud "kewujudan", dan ia hanya menemui rekod yang memenuhi syarat. Setelah rekod padanan pertama ditemui, carian berhenti.

wujud Subquery

Subquery ialah pernyataan pilihan pertama dan klausa pengiraan serta kata kunci into tidak dibenarkan.

wujud bermakna sama ada subkueri mengembalikan set hasil.

SELECT * FROM Person
WHERE exists ( SELECT 1); --SELECT 0 SELECT NULL 返回结果都一样,因为这三个子查询都有结果集返回,因此总是True,SELECT * FROM Person照常执行
Salin selepas log masuk

Tetapi jika tiada set keputusan dikembalikan kerana syarat tambahan dalam subkueri, pernyataan utama tidak akan dilaksanakan:

SELECT * FROM Person
WHERE exists ( SELECT * FROM Person
WHERE Person_Id = 100); --如果不存在Person_Id的记录,则子查询没有结果集返回,主语句不执行
Salin selepas log masuk

5. Subkueri yang mengembalikan jadual data baharu

5.1 Tanya nombor pelajar semua pelajar yang gred dalam kursus "001" lebih tinggi daripada kursus "002"

Select a.Sno from (select Sno,score from SC where Sno=&#39;001&#39;) a,
(select Sno,scorefrom SC where Cno=&#39;002&#39;) b
Where a.score>b.score and a.Sno=b.Sno;
Salin selepas log masuk

Pembelajaran yang disyorkan: video mysql; tutorial

Atas ialah kandungan terperinci Apakah pernyataan pertanyaan bersarang mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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