PostgreSQL IN, Bukan IN dengan Contoh

⚡ Ringkasan Cerdas

PostgreSQL Operator IN memeriksa apakah suatu nilai muncul dalam daftar atau subkueri di dalam klausa WHERE, menggantikan beberapa kondisi OR di seluruh pernyataan SELECT, UPDATE, INSERT, dan DELETE untuk pemfilteran yang lebih bersih, lebih cepat, dan lebih mudah dibaca.

  • 📋 sintaks: value IN (list) mengembalikan nilai true ketika nilai tersebut cocok dengan item apa pun dalam daftar.
  • 🔤 Daftar Karakter: Masukkan nilai teks dalam tanda kutip tunggal di dalam tanda kurung.
  • 🔢 Daftar Numerik: Bandingkan angka secara langsung, tanpa tanda kutip, untuk kecocokan yang tepat.
  • 🚫 TIDAK MASUK: Mengembalikan baris yang nilainya tidak ada dalam daftar yang diberikan.
  • ⚠️ Perangkap NULL: Nilai NULL di dalam NOT IN dapat secara diam-diam mengembalikan nol baris.
  • 🤖 Pertanyaan AI: Asisten menyusun klausa IN dan menandai NULL serta risiko kinerja.

PostgreSQL MASUK, TIDAK MASUK dengan Contoh

Apa itu PostgreSQL DI DALAM?

Operator IN digunakan dalam klausa WHERE yang memungkinkan untuk memeriksa apakah suatu nilai ada dalam daftar nilai lain. Operasi IN membantu mengurangi kebutuhan akan beberapa kondisi OR dalam pernyataan SELECT, UPDATE, INSERT, atau DELETE.

Sintaksis

Operator IN menggunakan sintaks berikut:

value IN (value_1, value_2, ...)

Nilainya adalah nilai yang Anda periksa dalam daftar.

Nilai_1, nilai_2… adalah nilai daftar.

Jika nilai ditemukan dalam daftar, operator akan mengembalikan nilai true.

Daftar tersebut dapat berupa kumpulan angka atau string, atau bahkan hasil keluaran dari suatu PILIH pernyataan seperti yang ditunjukkan di bawah ini:

value IN (SELECT value FROM table-name);

Pernyataan yang ditempatkan di dalam tanda kurung dikenal sebagai subquery.

PostgreSQL Dengan Karakter

Mari kita tunjukkan bagaimana Anda dapat menggunakan operator IN dengan nilai karakter.

Pertimbangkan tabel berikut:

Para karyawan:

PostgreSQL Dengan Karakter

Mari kita jalankan kueri berikut terhadap tabel di atas:

SELECT * FROM Employees WHERE name IN ('James John', 'Mercy Bush', 'Kate Joel');

Hasilnya adalah sebagai berikut:

PostgreSQL IN Dengan hasil Karakter

Kami memiliki daftar tiga nama. Kami mencari apakah salah satu dari nama-nama ini dapat ditemukan di kolom nama pada tabel Karyawan. Kate Joel ditemukan cocok dengan salah satu catatan dalam tabel tersebut, dan detailnya telah dikembalikan.

PostgreSQL Masuk dengan Angka

Sekarang, mari kita lihat bagaimana kita bisa menggunakan operator IN dengan nilai numerik.

Perhatikan tabel Harga yang diberikan di bawah ini:

Harga:

PostgreSQL Masuk dengan Angka

Kita dapat menjalankan kueri berikut terhadap tabel tersebut:

SELECT * FROM Price WHERE price IN (200, 308, 250, 550);

Ini mengembalikan yang berikut:

PostgreSQL IN Dengan hasil numerik

Kami telah membuat daftar dengan 4 nilai numerik. Kami sedang memeriksa apakah kami dapat mencocokkan salah satu dari nilai-nilai ini dengan nilai-nilai yang terdapat dalam kolom harga pada tabel Harga. Dua nilai telah dicocokkan, dan detailnya telah dikembalikan.

Menggunakan NOT Operator

Operator IN dapat digunakan bersama dengan operator NOT. Ini mengembalikan nilai yang tidak ditemukan di kolom yang ditentukan. Kami akan menggunakan tabel Harga untuk menunjukkan hal ini.

SELECT * FROM Price WHERE price NOT IN (200, 400, 190, 230);

Ini akan mengembalikan hal berikut:

PostgreSQL Dalam penggunaan operator NOT

Kami telah membuat daftar dengan 4 nilai numerik. Kami sedang memeriksa kolom harga pada tabel Harga untuk nilai yang tidak termasuk dalam daftar. Dua nilai, 250 dan 300, tidak ditemukan. Oleh karena itu, detailnya telah dikembalikan.

Menggunakan pgAdmin

Di luar shell SQL, kueri IN dan NOT IN yang sama dapat dijalankan secara visual melalui antarmuka pgAdmin.

Dengan Karakter

Untuk mencapai hal yang sama melalui pgAdmin, lakukan ini:

Langkah 1) Masuk ke akun pgAdmin Anda.

Langkah 2)

  1. Dari bilah navigasi di sebelah kiri, klik Database.
  2. Klik Demo.

Menggunakan pgAdmin Dengan Karakter

Langkah 3) Ketik kueri di editor kueri:

SELECT * FROM Employees WHERE name IN ('James John', 'Mercy Bush', 'Kate Joel');

Langkah 4) Klik tombol Jalankan.

Menggunakan pgAdmin dengan kueri karakter

Seharusnya mengembalikan hal berikut:

Menggunakan pgAdmin dengan hasil Karakter

Dengan Numerik

Untuk mencapai hal yang sama melalui pgAdmin, lakukan ini:

Langkah 1) Masuk ke akun pgAdmin Anda.

Langkah 2)

  1. Dari bilah navigasi di sebelah kiri, klik Database.
  2. Klik Demo.

Menggunakan pgAdmin Dengan Numerik

Langkah 3) Ketik kueri di editor kueri:

SELECT * FROM Price WHERE price IN (200, 308, 250, 550);

Langkah 4) Klik tombol Jalankan.

Menggunakan pgAdmin dengan kueri numerik

Seharusnya mengembalikan hal berikut:

Menggunakan pgAdmin dengan hasil numerik

Menggunakan NOT Operator

Untuk mencapai hal yang sama melalui pgAdmin, lakukan ini:

Langkah 1) Masuk ke akun pgAdmin Anda.

Langkah 2)

  1. Dari bilah navigasi di sebelah kiri, klik Database.
  2. Klik Demo.

Menggunakan operator NOT di pgAdmin

Langkah 3) Ketik kueri di editor kueri:

SELECT * FROM Price WHERE price NOT IN (200, 400, 190, 230);

Langkah 4) Klik tombol Jalankan.

Menggunakan operator NOT dalam kueri di pgAdmin

Seharusnya mengembalikan hal berikut:

Menggunakan operator NOT menghasilkan pgAdmin

Unduh Database yang digunakan dalam Tutorial ini

Pertanyaan Umum Demo Slot

In PostgreSQLEXISTS seringkali berjalan lebih cepat daripada IN pada subkueri besar karena berhenti pada kecocokan pertama. Untuk daftar kecil dan konstan, IN sederhana dan efisien. Uji keduanya dengan EXPLAIN ANALYZE pada data Anda sendiri.

NOT IN memperlakukan NULL sebagai nilai yang tidak diketahui, jadi jika daftar atau subkueri berisi NULL, seluruh kondisi dapat dievaluasi menjadi tidak diketahui dan mengembalikan nol baris. Saring nilai NULL atau gunakan NOT EXISTS sebagai gantinya.

IN menggantikan rangkaian panjang kondisi OR dengan satu klausa yang mudah dibaca. WHERE id IN (1,2,3) sama dengan WHERE id=1 OR id=2 OR id=3, tetapi lebih pendek, lebih jelas, dan lebih mudah dipelihara.

Ya. PostgreSQL memperlakukan x IN (a, b, c) sebagai setara dengan x = ANY (ARRAY[a, b, c]). Keduanya menghasilkan hasil yang sama dan biasanya rencana kueri yang sama.

Asisten AI menghasilkan klausa IN dari bahasa Inggris biasa, menyarankan daftar nilai yang tepat, dan menandai risiko NULL dalam NOT IN. Mereka juga menulis ulang kueri yang lambat dan menambahkan petunjuk EXPLAIN untuk penyempurnaan.

Ya. Alat AI Copilot mendeteksi kondisi OR yang berulang pada satu kolom dan merefaktornya menjadi satu daftar IN, sehingga meningkatkan keterbacaan dan mengurangi kemungkinan kesalahan logika.

Ya. Letakkan SELECT di dalam tanda kurung: WHERE id IN (SELECT id FROM orders). Kueri bagian dalam, yang disebut subkueri, menyediakan daftar nilai yang diperiksa oleh IN.

Untuk tabel besar, NOT EXISTS atau LEFT JOIN dengan IS NULL biasanya mengungguli NOT IN karena PostgreSQL Membangun anti-join yang efisien. Pastikan juga kolom yang dibandingkan telah diindeks.

Ringkaslah postingan ini dengan: