Rumah >pangkalan data >tutorial mysql >Cara menggunakan subquery MySQL
Proses pelaksanaan subkueri berkorelasi
Jika pelaksanaan subkueri bergantung pada pertanyaan luaran, ia biasanya kerana jadual dalam subkueri menggunakan jadual luaran Dan korelasi bersyarat dilakukan, jadi setiap kali pertanyaan luaran dilaksanakan, subkueri mesti dikira semula subkueri sedemikian dipanggil subkueri berkorelasi. Memandangkan setiap baris pertanyaan utama dilaksanakan, subkueri berkorelasi dilaksanakan dalam susunan baris demi baris.
Arahan: Gunakan lajur dalam pertanyaan utama dalam subkueri
Tajuk: Soal nama keluarga, gaji dan jumlah pekerja yang gajinya lebih besar daripada gaji purata jabatan Jabatannya
Kaedah 1: Subquery berkaitan
Guna subquery dalam FROM
SELECT last_name,salary,e1.department_id FROM employees e1,(SELECT department_id,AVG(salary) dept_avg_sal FROM employees GROUP BY department_id) e2 WHERE e1.`department_id` = e2.department_id AND e2.dept_avg_sal < e1.`salary`;
subquery jenis: subquery As sebahagian daripada daripada, subkueri mesti dipetik dengan (), dan subkueri mesti dinamakan
, dan digunakan sebagai "jadual maya sementara".
Tajuk: Pertanyaan ID pekerja, gaji, diisih mengikut nama_jabatan
Gunakan subkueri mengikut URUSAN:
SELECT employee_id,salary FROM employees e ORDER BY ( SELECT department_name FROM departments d WHERE e.`department_id` = d.`department_id` );
Subkueri yang berkaitan adalah biasanya digunakan bersama dengan operator EXISTS untuk menyemak sama ada terdapat baris yang memenuhi syarat dalam subquery.
Jika tiada baris yang memenuhi syarat dalam subkueri:
Syarat itu kembali SALAH
Teruskan carian dalam subkueri
Jika dalam subkueri Terdapat baris yang memenuhi syarat:
Jangan teruskan mencari dalam subkueri
Syarat mengembalikan BENAR
TIDAK WUJUD kata kunci bermakna jika keadaan tertentu tidak wujud , TRUE dikembalikan, jika tidak, Kembalikan FALSE.
Tajuk: Tanya id_pekerja, nama_keluarga, id_kerja, id_jabatan pengurus syarikat
SELECT employee_id, last_name, job_id, department_id FROM employees e1 WHERE EXISTS ( SELECT * FROM employees e2 WHERE e2.manager_id = e1.employee_id);
Subkueri sebenarnya adalah penghakiman bersyarat selepas membuat pertanyaan melalui jadual yang tidak diketahui, manakala penyertaan diri adalah berdasarkan pada jadual datanya sendiri yang diketahui
melaksanakan pertimbangan bersyarat, jadi pemprosesan gabungan sendiri dioptimumkan dalam kebanyakan DBMS.
Atas ialah kandungan terperinci Cara menggunakan subquery MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!