PostgreSQL IN, Не IN с примери

⚡ Умно обобщение

PostgreSQL Операторът IN проверява дали дадена стойност се появява в списък или подзаявка в клауза WHERE, замествайки множество условия OR в операторите SELECT, UPDATE, INSERT и DELETE за по-чисто, по-бързо и по-четливо филтриране.

  • 📋 Синтаксис: стойност 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… са стойностите в списъка.

Ако стойността е намерена в списъка, операторът ще върне истина.

Списъкът може да бъде набор от числа или низове, или дори изходният резултат от 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 числови стойности. Проверяваме дали можем да съпоставим някоя от тези стойности със стойностите, съдържащи се в ценовата колона на таблицата с цени. Бяха съпоставени две стойности и техните подробности бяха върнати.

Използване на НЕ OperaTor

Операторът IN може да се използва заедно с оператора NOT. Връща стойностите, които не са намерени в указаната колона. Ще използваме таблицата с цените, за да демонстрираме това.

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

Това ще върне следното:

PostgreSQL IN Използване на оператора 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 с числов резултат

Използване на НЕ OperaTor

За да постигнете същото чрез 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 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]). И двете дават един и същ резултат и обикновено един и същ план на заявката.

AI асистентите генерират 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 изгражда ефективно анти-съединяване. Също така се уверете, че сравняваните колони са индексирани.

Обобщете тази публикация с: