PostgreSQL IN, Not IN с примерами

⚡ Умное резюме

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

  • 📋 Синтаксис: Функция `value IN (list)` возвращает `true`, если значение совпадает с любым элементом списка.
  • 🔤 Списки персонажей: Текстовые значения заключайте в одинарные кавычки внутри скобок.
  • 🔢 Числовые списки: Для точного совпадения сравнивайте числа напрямую, без кавычек.
  • ???? НЕ ВХОДИТ В: Возвращает строки, значение которых отсутствует в предоставленном списке.
  • ⚠️ NULL-ловушка: Значение 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 В использовании оператора НЕ

Мы создали список с 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 с числовыми значениями

Шаг 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.

Загрузите базу данных, используемую в этом руководстве.

Часто задаваемые вопросы (FAQ)

In PostgreSQLЗапрос EXISTS часто выполняется быстрее, чем 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 обнаруживают повторяющиеся условия ИЛИ в одном столбце и преобразуют их в единый список ИМЕН, улучшая читаемость и снижая вероятность логических ошибок.

Да. Поместите оператор SELECT внутри скобок: WHERE id IN (SELECT id FROM orders). Внутренний запрос, называемый подзапросом, предоставляет список значений, проверяемых параметром IN.

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

Подведем итог этой публикации следующим образом: