MySQL MariaDB

Subkueri MySQL

Subkueri MySQL
Subkueri adalah pertanyaan SQL dalam pertanyaan lebih besar yang bersifat rekursif, atau subkueri dianggap sebagai pertanyaan dalaman. Sebaliknya, pertanyaan luar disebut sebagai pertanyaan yang merangkumi subkueri. Subkueri MySQL dapat disertakan dalam pertanyaan, termasuk PILIH, MASUK, KEMASKINI, atau HAPUS. Selanjutnya, dalam subkueri lain, subkueri mungkin terletak. Subkueri frasa harus ditutup dalam kurungan di mana sahaja ia digunakan. Kami akan mengajar anda bagaimana dan kapan menggunakan subkueri MySQL untuk menyusun pertanyaan rumit dan menerangkan idea subkueri yang berkaitan. Buka shell baris perintah dari desktop anda dan tulis kata laluan anda untuk mula menggunakannya. Tekan Enter dan teruskan.

Pertanyaan dalam Rekod Jadual Tunggal:

Buat jadual bernama 'binatang' dalam data 'pangkalan data.'Tambah catatan berikut haiwan yang berbeza dengan sifat yang berbeza seperti yang ditunjukkan. Ambil rekod ini menggunakan pertanyaan PILIH seperti berikut:

>> PILIH * DARI data.haiwan;

Contoh 01:

Mari dapatkan rekod terhad jadual ini menggunakan subkueri. Dengan menggunakan pertanyaan di bawah, kami tahu bahawa subkueri akan dijalankan terlebih dahulu, dan outputnya akan digunakan dalam pertanyaan utama sebagai input. Satu pertanyaan hanya menjangkau usia di mana harga haiwan adalah 2500. Umur haiwan yang harganya 2500 adalah 4 dalam jadual. Pertanyaan utama akan memilih semua catatan jadual di mana umurnya lebih besar dari 4, dan outputnya diberikan di bawah.

>> PILIH * DARI data.haiwan DI MANA Umur> (PILIH Umur DARI data.haiwan DI MANA Harga = '2500');

Contoh 02:

Mari gunakan jadual yang sama dalam situasi yang berbeza. Dalam contoh ini, kita akan menggunakan beberapa Fungsi dan bukannya klausa WHERE dalam subkueri. Kami telah mengambil rata-rata semua harga yang diberikan untuk haiwan. Harga purata ialah 3189. Pertanyaan utama akan memilih semua rekod haiwan dengan harga lebih dari 3189. Anda akan mendapat output di bawah.

>> PILIH * DARI data.haiwan DI MANA Harga> (PILIH AVG (Harga) DARI data.haiwan);

Contoh 03:

Mari gunakan klausa IN dalam pertanyaan PILIH utama. Pertama sekali, subkueri akan memperoleh harga lebih besar daripada 2500. Selepas itu, pertanyaan utama akan memilih semua rekod jadual 'haiwan' di mana harganya terletak pada hasil subkueri.

>> PILIH * DARI data.haiwan DI MANA Harga DI (PILIH Harga DARI data.haiwan DI MANA Harga> 2500);

Contoh 04:

Kami telah menggunakan subkueri untuk mengambil nama haiwan dengan harganya 7000. Oleh kerana haiwan itu adalah lembu, maka itulah sebabnya nama 'lembu' akan dikembalikan ke pertanyaan utama. Dalam pertanyaan utama, semua rekod akan diambil dari jadual di mana nama haiwan adalah 'lembu."Oleh kerana kami hanya mempunyai dua rekod untuk 'sapi haiwan,' itulah sebabnya kami mempunyai hasil di bawah ini.

>> PILIH * DARI data.haiwan DI MANA Nama = (PILIH Nama DARI data.haiwan DI MANA Harga = '7000');

Pertanyaan dalam Rekod Pelbagai Jadual:

Andaikan dua jadual di bawah, 'pelajar' dan 'guru,' dalam pangkalan data anda. Mari cuba beberapa contoh subkueri menggunakan dua jadual ini.

>> PILIH * DARI data.pelajar;
>> PILIH * DARI data.guru;

Contoh 01:

Kami akan mengambil data dari satu jadual menggunakan subkueri dan menggunakannya sebagai input untuk pertanyaan utama. Ini bermaksud bahawa kedua-dua jadual ini dapat dikaitkan dalam beberapa cara. Dalam contoh di bawah, kami telah menggunakan subkueri untuk mengambil nama pelajar dari jadual 'pelajar' di mana nama guru adalah 'Samina.Pertanyaan ini akan mengembalikan 'Samina' kepada guru jadual pertanyaan utama.'Pertanyaan utama kemudian akan memilih semua rekod yang berkaitan dengan nama guru' Samina."Oleh kerana kami mempunyai dua rekod untuk nama ini, oleh itu kami mendapat keputusan ini.

>> PILIH * DARI data.cikgu DI MANA TeachName = (PILIH TeachName DARI data.pelajar DI MANA TeachName = 'Samina');

Contoh 02:

Untuk menghuraikan subkueri sekiranya terdapat jadual yang berlainan, cuba contoh ini. Kami mempunyai subkueri yang mengambil nama guru dari pelajar meja. Nama tersebut harus mempunyai 'i' pada kedudukan apa pun dalam nilainya. Ini bermaksud, semua nama di kolom TeachName yang mempunyai nilai 'i' akan dipilih dan dikembalikan ke pertanyaan utama. Pertanyaan utama akan memilih semua rekod dari jadual 'guru' di mana nama guru berada dalam output yang dikembalikan oleh subkueri. Oleh kerana subkueri mengembalikan 4 nama guru, itulah sebabnya kami akan mempunyai catatan semua nama ini berada di meja guru.'

>> PILIH * DARI data.guru DI MANA Nama Pengajar DI (PILIH Nama Ajaran DARI data.pelajar DI MANA Nama Pengajar SEPERTI '% i%');

Contoh 03:

Pertimbangkan dua jadual di bawah ini, 'pesanan' dan 'pesanan1'.

>> PILIH * DARI data.pesanan;
>> PILIH * DARI data.pesanan1;

Mari cuba klausa APAPUN dalam contoh ini untuk menghuraikan subkueri. Subkueri akan memilih 'id' dari jadual 'order1', di mana lajur 'Status' mempunyai nilai 'Belum dibayar.'Id' boleh lebih daripada 1. Ini bermakna lebih daripada 1 nilai akan dikembalikan ke pertanyaan utama untuk mendapatkan hasil 'pesanan' jadual. Dalam kes ini, mana-mana 'id' boleh digunakan. Kami mendapat output di bawah untuk pertanyaan ini.

>> PILIH Item, Jualan, id DARI data.pesan WHERE id = SETIAP (PILIH id DARI data.pesanan1 DI MANA Status = 'Belum dibayar');

Contoh 04:

Andaikan anda mempunyai data di bawah dalam jadual 'order1' sebelum menggunakan sebarang pertanyaan.

>> PILIH * DARI data.pesanan1;

Mari gunakan pertanyaan dalam pertanyaan untuk menghapus beberapa rekod dari jadual 'order1'. Pertama, subkueri akan memilih nilai 'Status' dari jadual 'pesanan' di mana Item itu 'Buku.'Subkueri mengembalikan' Dibayar 'sebagai nilai. Sekarang pertanyaan utama akan menghapus baris dari jadual 'order1' di mana nilai lajur 'Status' adalah 'Dibayar.'

>> HAPUS DARI data.order1 DI MANA Status = (PILIH Status DARI data.pesanan DI MANA Item = 'Buku');

Setelah diperiksa, kini rekod di bawah ini tetap berada dalam jadual 'order1' setelah pelaksanaan pertanyaan.

>> PILIH * DARI data.pesanan1;

Kesimpulan:

Anda telah bekerja dengan berkesan dengan banyak pertanyaan dalam semua contoh di atas. Kami harap semuanya bersih dan bersih sekarang.

Kursor melompat atau bergerak secara rawak semasa menaip di Windows 10
Sekiranya anda mendapati kursor tetikus anda melompat atau bergerak sendiri, secara automatik, secara rawak semasa menaip komputer riba atau komputer ...
Cara membalikkan arah tatal Tetikus dan Pad Sentuh pada Windows 10
Tetikus dan Pad sentuhs bukan sahaja menjadikan pengkomputeran mudah, tetapi lebih cekap dan kurang memakan masa. Kami tidak dapat membayangkan kehidu...
Cara menukar saiz, warna & skema penunjuk dan kursor tetikus pada Windows 10
Penunjuk dan kursor tetikus di Windows 10 adalah aspek yang sangat penting dalam sistem operasi. Ini boleh dikatakan untuk sistem operasi lain juga, j...