SQL SELECT IN adalah operator logika dalam Structured Query Language. Ini digunakan dalam kueri SQL untuk mengurangi penggunaan beberapa operator 'ATAU'. s
Operator IN di SQL juga memungkinkan untuk dengan mudah menguji kondisi yang cocok dengan nilai apa pun dalam daftar nilai. Ini mengurangi jumlah operator ATAU dalam kueri SQL.
Sintaks operator IN di SQL:
SELECT COLUMNNAME FROM TABLENAME WHERE COLUMNNAME IN (VALUE1, VALUE2);
Sintaks Subquery operator IN di SQL:
SELECT COLUMNNAME FROM TABLENAME WHERE COLUMNNAME IN (SELECT STATEMENT);
Dalam sintaks di atas, kita juga dapat menggunakan operator IN dengan subquery.
Mari kita pahami konsep SQL SELECT IN dengan bantuan contoh.
Perhatikan tabel berikut yang memiliki catatan berikut:
Tabel 1:Karyawan
KARYAWAN | FIRST_NAME | LAST_NAME | GAJI | KOTA | DEPARTEMEN | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50.000 | MUMBAI | C# | 5 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | BAIK | 60500 | MUMBAI | UJI | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGRWAL | 60000 | DELHI | ORACLE | 1 |
5001 | ARKIT | SHARMA | 55500 | DELHI | UJI | 4 |
Tabel 2:Manajer
Pengelola | nama_manajer | manajer_departemen |
1 | Snehdeep Kaur | ORACLE |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | UJI |
5 | Akash Kadam | C# |
Contoh 1: Tulis kueri untuk mengambil id karyawan, nama depan, nama belakang, dan Kota dari tabel karyawan di mana Kota menyertakan salah satu daftarnya adalah Mumbai, Pune, dan Delhi dalam tabel.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, CITY FROM EMPLOYEES WHERE CITY IN ('MUMBAI', 'PUNE', 'DELHI');
Dalam pernyataan di atas, kami telah mengambil id karyawan, nama depan dan belakang, dan Kota dari tabel karyawan, di mana Kota menyertakan salah satu nama kota, Mumbai, Pune, dan Delhi. Semua nama kota ini dilewatkan sebagai parameter di operator IN sebagai nilai. Tabel akan menampilkan semua record yang kota karyawannya cocok dengan daftar kota parameter operator IN.
Keluaran:
KARYAWAN | FIRST_NAME | LAST_NAME | KOTA |
1001 | VAIBHAVI | MISHRA | PUNE |
2002 | BHAVESH | JAIN | PUNE |
2003 | RUCHIKA | JAIN | MUMBAI |
3001 | PRANOTI | SHENDE | PUNE |
3003 | DEEPAM | JAUHARI | MUMBAI |
4001 | RAJESH | BAIK | MUMBAI |
4003 | RUCHIKA | AGRWAL | DELHI |
5001 | ARKIT | SHARMA | DELHI |
Ini hanya menunjukkan delapan karyawan yang nama kotanya cocok dengan daftar parameter ekspresi operator IN.
Contoh 2: Tulis kueri untuk mengambil id karyawan, nama depan, nama belakang, gaji, dan Departemen dari tabel karyawan di mana gaji termasuk salah satu daftarnya adalah 50500, 55500, dan 65500 dalam tabel.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, DEPARTMENT FROM EMPLOYEES WHERE SALARY IN (50500, 55500, 65500);
Dalam pernyataan di atas, kami telah mengambil id karyawan, nama depan dan belakang, gaji, dan Departemen dari tabel karyawan di mana gaji termasuk salah satu gaji adalah 50500, 55500, dan 65500. Semua gaji ini dilewatkan sebagai parameter di operator IN sebagai nilai. Tabel akan menampilkan semua record yang gaji karyawannya cocok dengan daftar gaji parameter operator IN.
Keluaran:
KARYAWAN | FIRST_NAME | LAST_NAME | GAJI | DEPARTEMEN |
1001 | VAIBHAVI | MISHRA | 65500 | ORACLE |
1003 | NIKHIL | VANI | 50500 | FMW |
2001 | PRACHI | SHARMA | 55500 | ORACLE |
2002 | BHAVESH | JAIN | 65500 | FMW |
3001 | PRANOTI | SHENDE | 55500 | JAVA |
3002 | ANUJA | WANRE | 50500 | FMW |
5001 | ARKIT | SHARMA | 55500 | UJI |
Ini menunjukkan hanya tujuh karyawan yang gajinya sesuai dengan daftar parameter ekspresi operator IN.
Contoh 3: Tulis kueri untuk mengambil id karyawan, nama depan, nama belakang, gaji, dan Kota dari karyawan di mana gaji karyawan lebih besar dari 60000 atau kota karyawan termasuk salah satu daftar kota adalah 'Mumbai', 'Pune' dan, 'Jaipur' dalam tabel.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY FROM EMPLOYEES WHERE SALARY > 60000 OR CITY IN ('PUNE', 'MUMBAI', 'JAIPUR');
Dalam pernyataan di atas, kami telah mengambil id karyawan, nama depan, nama belakang, gaji, dan Kota dari tabel karyawan di mana gaji karyawan lebih besar dari 60000 atau kota karyawan termasuk salah satu daftar kota ini adalah 'Mumbai', 'Pune', ' Jaipur'. Pernyataan SELECT klausa WHERE bagian pertama adalah GAJI> 60000 dan bagian terakhir adalah CITY IN ('PUNE', 'MUMBAI', 'JAIPUR'), karena kita menggunakan operator OR hasilnya akan dari kedua kondisi.
Keluaran:
KARYAWAN | FIRST_NAME | LAST_NAME | GAJI | KOTA |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE |
1003 | NIKHIL | VANI | 50500 | JAIPUR |
2002 | BHAVESH | JAIN | 65500 | PUNE |
2003 | RUCHIKA | JAIN | 50.000 | MUMBAI |
3001 | PRANOTI | SHENDE | 55500 | PUNE |
3002 | ANUJA | WANRE | 50500 | JAIPUR |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI |
4001 | RAJESH | BAIK | 60500 | MUMBAI |
Ini menunjukkan hanya delapan catatan dari tabel yang gajinya lebih besar dari 60000 atau nama Kota cocok dengan daftar parameter ekspresi operator IN.
Contoh 4: Tulis kueri untuk mengambil id karyawan, Gaji, Kota, dan Departemen dari tabel karyawan di mana departemen karyawan termasuk salah satu daftarnya adalah 'Oracle', 'FMW' dan juga Kota termasuk salah satu daftarnya adalah 'Delhi', 'Noida', 'Pun'.
SELECT EMPLOYEEID, SALARY, CITY, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT IN ('ORACLE', 'FMW') AND CITY IN ('PUNE', 'NOIDA', 'DELHI');
Kami telah mengambil id karyawan, gaji, Kota, dan Departemen dari tabel karyawan dalam pernyataan di atas. Departemen karyawan menyertakan salah satu daftar departemen yang diteruskan ke parameter operator IN. Kota karyawan menyertakan salah satu daftar kota yang diteruskan ke parameter operator IN, dan hasilnya hanya menyertakan detail karyawan yang cocok dengan kedua kondisi tersebut.
Keluaran:
KARYAWAN | GAJI | KOTA | DEPARTEMEN |
1001 | 65500 | PUNE | ORACLE |
2002 | 65500 | PUNE | FMW |
4003 | 60000 | DELHI | ORACLE |
Hanya ada tiga catatan dari tabel Karyawan yang kota karyawannya mencakup Pune, Delhi, dan Noida, dan Departemen mencakup Oracle, FMW.
Contoh 5: Tulis kueri untuk mengambil id karyawan, nama depan, nama belakang, gaji, Kota, dan Departemen dari tabel karyawan di mana gaji karyawan lebih besar dari 60000 dan Kota menyertakan salah satu daftar di Pune, Jaipur, Mumbai atau Departemen termasuk salah satu daftar adalah Java, Pengujian, C#.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY, DEPARTMENT FROM EMPLOYEES WHERE SALARY > 60000 AND CITY IN ('PUNE', 'MUMBAI', 'JAIPUR') OR DEPARTMENT IN ('JAVA', 'TESTING', 'C#');
Dalam pernyataan di atas, kami telah menggunakan operator OR, operator AND, dan beberapa operator IN dengan pernyataan SELECT untuk mengambil id karyawan, nama depan, nama belakang, gaji, Kota, dan Departemen dari tabel karyawan. Kueri SELECT pertama-tama mengambil catatan karyawan di mana gaji> 60000 DAN Kota DI ('Pune', 'Mumbai', Jaipur), hanya karyawan tersebut. Kedua kondisi tersebut benar, dan pada akhirnya Department IN ('Java', 'Testing', 'C#'), query ini akan mencari di hasil tahap pertama bahwa catatan karyawan yang kami ambil memiliki Departemen salah satu daftar yang kami lewati ke IN operator dan juga pergi untuk sisa catatan dalam tabel jika ada catatan yang ditemukan memiliki nama departemen kami melewati parameter operator IN catatan yang akan ditambahkan ke hasil.
Keluaran:
KARYAWAN | FIRST_NAME | LAST_NAME | GAJI | KOTA | DEPARTEMEN |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW |
2003 | RUCHIKA | JAIN | 50.000 | MUMBAI | C# |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA |
4001 | RAJESH | BAIK | 60500 | MUMBAI | UJI |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA |
5001 | ARKIT | SHARMA | 55500 | DELHI | UJI |
Hanya ada 9 record karyawan yang gajinya lebih besar dari 60000. City termasuk salah satu daftar yang kami berikan sebagai parameter ke operator City IN atau Departemen termasuk salah satu daftar yang kami berikan ke operator Department IN.
Contoh 6: Tulis sub-kueri untuk mengambil detail karyawan dari tabel karyawan di mana managerid lebih besar dari 2 dari tabel manajer.
SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGERID > 2);
Dalam pernyataan di atas, subquery Pertama akan dieksekusi SELECT MANAGERID FROM MANAGER WHERE MANAGERID> 2; outputnya akan menjadi manager id yang lebih besar dari 2 pass sebagai parameter dalam klausa WHERE query utama, dan output akhir akan dari tabel employee dimana employee-manager id menyertakan salah satu daftar yang merupakan output dari sub-query.
Keluaran:
KARYAWAN | FIRST_NAME | LAST_NAME | GAJI | KOTA | DEPARTEMEN | MANAGERID |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4001 | RAJESH | BAIK | 60500 | MUMBAI | UJI | 4 |
5001 | ARKIT | SHARMA | 55500 | DELHI | UJI | 4 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
2003 | RUCHIKA | JAIN | 50.000 | MUMBAI | C# | 5 |
Hanya ada tujuh record dari tabel karyawan yang id manajernya lebih besar dari 2.
Contoh 7: Tulis sub-kueri untuk mengambil detail karyawan di mana departemen manajer menyertakan salah satu daftarnya adalah oracle, java, dan FMW.
SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGER_DEPARTMENT IN ('ORACLE', 'FMW', 'JAVA'));
Dalam pernyataan di atas, pertama-tama kita ambil id manajer dari tabel manajer di mana departemen manajer termasuk salah satu daftarnya adalah Oracle, FMW, Java. Kemudian kueri utama akan mengambil detail karyawan dari output sub-kueri.
Keluaran:
KARYAWAN | FIRST_NAME | LAST_NAME | GAJI | KOTA | DEPARTEMEN | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
4003 | RUCHIKA | AGRWAL | 60000 | DELHI | ORACLE | 1 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
Contoh 8: Tulis kueri untuk mengambil id karyawan, nama depan, nama belakang, gaji, Kota dari tabel karyawan dengan gaji antara 50000 dan 65000 atau Kota termasuk salah satu daftarnya adalah Pune, Jaipur, dan Mumbai.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY FROM EMPLOYEES WHERE SALARY BETWEEN 50000 AND 65000 OR CITY IN ('PUNE', 'MUMBAI', 'JAIPUR');
Dalam pernyataan di atas, kami telah mengambil id karyawan, nama depan, nama belakang, gaji, dan Kota dari tabel karyawan di mana gaji karyawan antara 50000 dan 65000 atau Kota termasuk salah satu daftar adalah Pune, Mumbai, Jaipur.
Keluaran:
KARYAWAN | FIRST_NAME | LAST_NAME | GAJI | KOTA |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA |
1003 | NIKHIL | VANI | 50500 | JAIPUR |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH |
2002 | BHAVESH | JAIN | 65500 | PUNE |
2003 | RUCHIKA | JAIN | 50.000 | MUMBAI |
3001 | PRANOTI | SHENDE | 55500 | PUNE |
3002 | ANUJA | WANRE | 50500 | JAIPUR |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI |
4001 | RAJESH | BAIK | 60500 | MUMBAI |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA |
4003 | RUCHIKA | AGRWAL | 60000 | DELHI |
5001 | ARKIT | SHARMA | 55500 | DELHI |