Apakah sub pertanyaan?
Sub pertanyaan adalah pertanyaan terpilih yang terdapat di dalam pertanyaan lain. Pertanyaan pilih dalaman biasanya digunakan untuk menentukan hasil pertanyaan pilih luar.
Mari lihat sintaks sub-pertanyaan -
Keluhan pelanggan yang biasa di Perpustakaan Video MyFlix adalah jumlah tajuk filem yang rendah. Pihak pengurusan mahu membeli filem untuk kategori yang mempunyai jumlah tajuk paling sedikit.
Anda boleh menggunakan pertanyaan seperti
SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);
Ia memberikan hasil
Mari lihat bagaimana pertanyaan ini berfungsi
Di atas adalah bentuk Row Sub-Query . Dalam sub-pertanyaan seperti itu, pertanyaan dalaman hanya dapat memberikan SATU hasil. Pengendali yang dibenarkan semasa bekerja dengan subkueri baris adalah [=,>, =, <=,,! =,]
Mari lihat contoh lain,
Andaikan anda mahu Nama dan nombor Telefon anggota orang yang telah menyewa filem dan belum mengembalikannya. Sebaik sahaja anda mendapat Nama dan Nombor Telefon, anda memanggilnya untuk memberi peringatan. Anda boleh menggunakan pertanyaan seperti
SELECT full_names,contact_number FROM members WHERE membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );
Mari lihat bagaimana pertanyaan ini berfungsi
Dalam kes ini, pertanyaan dalaman mengembalikan lebih daripada satu hasil. Di atas adalah jenis T dapat sub-quer y.
Hingga kini kita telah melihat dua pertanyaan, mari kita lihat contoh pertanyaan tiga kali ganda !!!
Anggaplah pihak pengurusan mahu memberi ganjaran kepada ahli dengan gaji tertinggi.
Kami boleh menjalankan pertanyaan seperti
Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));
Pertanyaan di atas memberikan hasil berikut -
Sub-Pertanyaan Bersama!
Apabila dibandingkan dengan Gabungan, sub-pertanyaan mudah digunakan dan senang dibaca. Mereka tidak rumit seperti Bergabung
Oleh itu sering digunakan oleh pemula SQL.
Tetapi sub-pertanyaan mempunyai masalah prestasi. Menggunakan gabungan bukan sub-pertanyaan kadang-kadang dapat memberi anda peningkatan prestasi hingga 500 kali ganda.
Memandangkan pilihan, disarankan untuk menggunakan JOIN pada sub query.
Sub-Pertanyaan hanya boleh digunakan sebagai penyelesaian penggantian apabila anda tidak dapat menggunakan operasi BERGABUNG untuk mencapai perkara di atas
Ringkasan
- Subkueri adalah pertanyaan tertanam di dalam pertanyaan lain. Pertanyaan tertanam dikenali sebagai pertanyaan dalam dan pertanyaan bekas dikenali sebagai pertanyaan luar.
- Sub pertanyaan mudah digunakan, menawarkan fleksibiliti yang besar dan dapat dengan mudah dipecah menjadi komponen logik tunggal yang membentuk pertanyaan yang sangat berguna ketika Menguji dan menyahpepijat pertanyaan.
- MySQL menyokong tiga jenis subkueri, skalar, baris dan subkueri jadual.
- Sub pertanyaan skalar hanya mengembalikan satu baris dan lajur tunggal.
- Sub pertanyaan baris hanya mengembalikan satu baris tetapi boleh mempunyai lebih daripada satu lajur.
- Subkueri jadual dapat mengembalikan beberapa baris dan lajur.
- Subkueri juga boleh digunakan dalam pertanyaan INSERT, UPDATE dan DELETE.
- Untuk masalah prestasi, ketika mendapatkan data dari beberapa jadual, sangat disarankan untuk menggunakan JOIN dan bukannya subkueri. Sub pertanyaan hanya boleh digunakan dengan alasan yang baik.