PostgreSQL IN, не IN з прикладами

⚡ Розумний підсумок

PostgreSQL Оператор IN перевіряє, чи з'являється значення у списку або підзапиті всередині речення WHERE, замінюючи кілька умов OR в операторах SELECT, UPDATE, INSERT та DELETE для чистішої, швидшої та зручнішої фільтрації.

  • 📋 Синтаксис: Функція value IN (список) повертає true, коли значення збігається з будь-яким елементом списку.
  • 🔤 Списки персонажів: Візьміть текстові значення в одинарні лапки в дужках.
  • 🔢 Числові списки: Порівнюйте числа безпосередньо, без лапок, для пошуку точних збігів.
  • 🚫 НЕ ВХОДИТЬ: Повертає рядки, значення яких відсутнє у наданому списку.
  • ⚠️ НУЛЬОВА пастка: NULL всередині NOT IN може непомітно повернути нуль рядків.
  • 🤖 Запити штучного інтелекту: Помічники створюють речення IN та позначають NULL та ризики продуктивності.

PostgreSQL В, НЕ В з прикладами

Що таке PostgreSQL В?

Оператор IN використовується в реченні WHERE, яке дозволяє перевірити, чи є значення у списку інших значень. Операція IN допомагає зменшити потребу в кількох умовах OR в інструкціях SELECT, UPDATE, INSERT або DELETE.

синтаксис

Оператор IN має такий синтаксис:

value IN (value_1, value_2, ...)

Значення – це значення, яке ви перевіряєте у списку.

Значення_1, значення_2… є значеннями списку.

Якщо значення знайдено у списку, оператор поверне значення true.

Список може бути набором чисел або рядків, або навіть результатом виводу Оператор SELECT як показано нижче:

value IN (SELECT value FROM table-name);

Оператор, розміщений у дужках, називається підзапитом.

PostgreSQL З характером

Давайте продемонструємо, як ви можете використовувати оператор IN зі значеннями символів.

Розглянемо наступну таблицю:

Кількість працівників:

PostgreSQL З характером

Виконаємо наступний запит до таблиці вище:

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

Він повертає наступне:

PostgreSQL В результаті з символом

У нас є список із трьох імен. Ми шукаємо, чи можемо знайти якесь із цих імен у стовпці «Ім’я» таблиці «Співробітники». Ім’я Кейт Джоел було зіставлено з одним із записів таблиці, і було повернуто його дані.

PostgreSQL З числовим

Тепер давайте подивимося, як ми можемо використовувати оператор IN із числовими значеннями.

Розгляньте таблицю цін, наведену нижче:

Ціна:

PostgreSQL З числовим

Ми можемо виконати такий запит до таблиці:

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

Це повертає наступне:

PostgreSQL З числовим результатом

Ми створили список із 4 числовими значеннями. Ми перевіряємо, чи можемо зіставити будь-яке з цих значень зі значеннями, що містяться в стовпці ціни таблиці цін. Було зіставлено два значення, і їхні деталі повернуто.

Використання НЕ Operaтор

Оператор IN можна використовувати разом з оператором NOT. Він повертає значення, яких немає у вказаному стовпці. Ми використаємо таблицю цін, щоб продемонструвати це.

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

Це поверне наступне:

PostgreSQL Використання оператора NOT

Ми створили список із 4 числовими значеннями. Ми перевіряємо стовпець цін у таблиці цін на наявність значень, які не є частиною списку. Два значення, 250 і 300, не знайдено. Тому їх дані були повернуті.

Використання pgAdmin

Поза межами оболонки SQL, ті ж самі запити IN та NOT IN можна виконувати візуально через інтерфейс pgAdmin.

З характером

Щоб зробити те саме через pgAdmin, виконайте наступне:

Крок 1) Увійдіть у свій обліковий запис pgAdmin.

Крок 2)

  1. На панелі навігації ліворуч натисніть Бази даних.
  2. Натисніть Демо.

Використання pgAdmin із символом

Крок 3) Введіть запит у редакторі запитів:

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

Крок 4) Натисніть кнопку Виконати.

Використання pgAdmin із запитом символів

Він повинен повернути наступне:

Використання pgAdmin з результатом пошуку символів

З числовим

Щоб зробити те саме через pgAdmin, виконайте наступне:

Крок 1) Увійдіть у свій обліковий запис pgAdmin.

Крок 2)

  1. На панелі навігації ліворуч натисніть Бази даних.
  2. Натисніть Демо.

Використання pgAdmin із Numeric

Крок 3) Введіть запит у редакторі запитів:

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

Крок 4) Натисніть кнопку Виконати.

Використання pgAdmin з числовим запитом

Він повинен повернути наступне:

Використання pgAdmin з числовим результатом

Використання НЕ Operaтор

Щоб зробити те саме через pgAdmin, виконайте наступне:

Крок 1) Увійдіть у свій обліковий запис pgAdmin.

Крок 2)

  1. На панелі навігації ліворуч натисніть Бази даних.
  2. Натисніть Демо.

Використання оператора NOT в pgAdmin

Крок 3) Введіть запит у редакторі запитів:

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

Крок 4) Натисніть кнопку Виконати.

Використання оператора NOT у запиті pgAdmin

Він повинен повернути наступне:

Використання оператора NOT призводить до результату в pgAdmin

Завантажте базу даних, яка використовується в цьому посібнику

Поширені запитання

In PostgreSQLEXISTS часто виконується швидше, ніж IN для великих підзапитів, оскільки зупиняється на першому збігу. Для невеликих, константних списків IN є простим та ефективним. Перевірте обидва за допомогою EXPLAIN ANALYZE на власних даних.

NOT IN трактує NULL як невідоме значення, тому, якщо список або підзапит містить NULL, вся умова може повернути невідоме значення та нуль рядків. Відфільтруйте NULL або використовуйте NOT EXISTS.

IN замінює довгі ланцюжки умов OR однією зручною для читання умовою. WHERE id IN (1,2,3) дорівнює WHERE id=1 OR id=2 OR id=3, але є коротшим, зрозумілішим та простішим у підтримці.

Так. PostgreSQL трактує x IN (a, b, c) як еквівалент x = ANY (ARRAY[a, b, c]). Обидва дають однаковий результат і зазвичай однаковий план запиту.

Помічники ШІ генерують речення IN зі звичайної англійської мови, пропонують правильний список значень та позначають ризики NULL у NOT IN. Вони також переписують повільні запити та додають підказки EXPLAIN для налаштування.

Так. Інструменти AI Copilot виявляють повторювані умови OR в одному стовпці та рефакторують їх в один список IN, покращуючи читабельність та зменшуючи ймовірність логічних помилок.

Так. Помістіть SELECT в дужки: WHERE id IN (SELECT id FROM orders). Внутрішній запит, який називається підзапитом, надає список значень, що перевіряються за допомогою IN.

Для великих таблиць NOT EXISTS або LEFT JOIN з IS NULL зазвичай перевершує NOT IN, оскільки PostgreSQL створює ефективне анти-з'єднання. Також переконайтеся, що порівнювані стовпці індексовані.

Підсумуйте цей пост за допомогою: