Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Operator SQL IN untuk Pemula

Dalam SQL, kode IN operator memungkinkan Anda untuk memfilter hasil kueri Anda berdasarkan daftar nilai.

Anda juga dapat menggunakannya untuk mencocokkan nilai apa pun yang dikembalikan oleh subkueri (subkueri adalah kueri yang bersarang di dalam kueri lain).

Tabel Sumber

Tabel berikut digunakan untuk contoh di halaman ini.

SELECT * FROM PetTypes;
SELECT * FROM Pets;

Hasil:

+-------------+-----------+
| PetTypeId   | PetType   |
|-------------+-----------|
| 1           | Bird      |
| 2           | Cat       |
| 3           | Dog       |
| 4           | Rabbit    |
+-------------+-----------+
(4 rows affected)
+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+
(8 rows affected)

Contoh

Berikut adalah contoh untuk mendemonstrasikan IN operator.

SELECT 
    PetId, 
    PetName, 
    DOB 
FROM Pets
WHERE PetName IN ('Fluffy', 'Bark', 'Wag');

Hasil:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 4       | Wag       | 2020-03-15 |
| 6       | Fluffy    | 2020-09-17 |
| 7       | Bark      | NULL       |
+---------+-----------+------------+

Kami dapat mencapai hasil yang sama dengan menggunakan dua OR operator:

SELECT 
    PetId, 
    PetName, 
    DOB 
FROM Pets
WHERE PetName = 'Fluffy' 
    OR PetName = 'Bark' 
    OR PetName = 'Wag';

Namun, kode IN operator adalah cara yang lebih ringkas untuk melakukannya. IN operator sangat bermanfaat ketika Anda memiliki daftar nilai yang panjang untuk dibandingkan.

IN operator hampir selalu mengeksekusi lebih cepat daripada beberapa OR operator, terutama pada kumpulan data yang lebih besar.

Nilai Numerik

Nilainya tidak terbatas hanya pada string. Misalnya, Anda dapat menggunakan IN pada daftar nilai numerik.

SELECT 
    PetId, 
    PetName, 
    DOB 
FROM Pets
WHERE PetId IN (1, 3, 5);

Hasil:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 3       | Scratch   | 2018-10-01 |
| 5       | Tweet     | 2020-11-28 |
+---------+-----------+------------+

Tanggal

Berikut adalah contoh yang menggunakan daftar tanggal.

SELECT 
    PetId, 
    PetName, 
    DOB 
FROM Pets
WHERE DOB IN (
    '2020-11-20', 
    '2018-10-01', 
    '2015-10-01'
    );

Hasil:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 3       | Scratch   | 2018-10-01 |
+---------+-----------+------------+

Menggunakan IN dengan Subquery

Manfaat lain dari IN operator, apakah itu dapat berisi SELECT . yang lain daftar. Ini dikenal sebagai subkueri . Subquery adalah kueri yang bersarang di dalam kueri lain (atau bahkan subkueri lain).

Ini contohnya.

SELECT 
    PetTypeId,
    PetType
FROM PetTypes
WHERE PetTypeId IN ( SELECT PetTypeId FROM Pets );

Hasil:

+-------------+-----------+
| PetTypeId   | PetType   |
|-------------+-----------|
| 1           | Bird      |
| 2           | Cat       |
| 3           | Dog       |
+-------------+-----------+

Contoh ini menunjukkan kepada kita berapa banyak jenis hewan peliharaan di hotel hewan peliharaan kita.

Menggunakan NOT IN

Kita bisa menambahkan NOT operator untuk membalik ini dan melihat berapa banyak jenis hewan peliharaan yang bukan di hotel hewan peliharaan kami.

SELECT 
    PetTypeId,
    PetType
FROM PetTypes
WHERE PetTypeId NOT IN ( SELECT PetTypeId FROM Pets );

Hasil:

+-------------+-----------+
| PetTypeId   | PetType   |
|-------------+-----------|
| 4           | Rabbit    |
+-------------+-----------+

Dalam hal ini, database kami berisi jenis hewan peliharaan Rabbit , tetapi saat ini kami tidak memiliki kelinci sebagai hewan peliharaan.

Ekspresi

Nilai yang diberikan adalah daftar ekspresi. Oleh karena itu, Anda dapat melakukan hal-hal seperti ini:

SELECT 
    PetId, 
    PetName, 
    DOB 
FROM Pets
WHERE PetId IN (1, 3, 2 + 3);

Hasil:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 3       | Scratch   | 2018-10-01 |
| 5       | Tweet     | 2020-11-28 |
+---------+-----------+------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MuleSoft Merangkul GraphQL untuk Memajukan Integrasi API

  2. Panduan analisis data:Saatnya untuk unggul dengan menggunakan Excel!

  3. Cara Menghitung Total Berjalan di Redshift

  4. Notasi ERD dalam Pemodelan Data

  5. Penyetelan Otomatis Database Azure SQL