PostgreSQL IN клауза

Postgresql In Klauza



Има много клаузи, които можете да използвате в PostgreSQL. Клаузата IN е една от тези клаузи и има много предимства, когато разберете как да я използвате, особено когато се комбинира с клаузата WHERE. Клаузата IN работи главно с израза SELECT, за да филтрира как искате да се изпълни заявката. Когато се изпълни, клаузата IN проверява посочения списък, за да види дали отговаря на критериите и извежда съответстващите стойности.

Разбиране как да работите с PostgreSQL IN клауза

В PostgreSQL, вие използвате клаузата IN с клаузата WHERE, за да филтрирате изхода чрез проверка срещу списък със стойности и резултатът е булева стойност.

Ето синтаксиса, който трябва да използвате:







стойност IN (стойност1, стойност2, стойност_n);

Даденият синтаксис приема стойността и я сравнява със стойност1, стойност2 и стойност_n. След това връща булево значение, ако има съвпадение. Списъкът със стойности, спрямо които да се проверява, може да бъде от всеки литерал, включително низове и цели числа. Освен това можете да създадете подзаявка, като израз SELECT.



Нека обсъдим различните начини за използване на оператора IN на PostgreSQL.



1. Работа с подзаявка

Както споменахме по-рано, стойността за проверка може да бъде подзаявка, която извлича стойностите с помощта на оператор на заявка, като например SELECT. По този начин можете да направите заявка към таблица, за да проверите стойностите на дадена колона. Нека използваме следната таблица за нашия пример:





Да предположим, че искаме да проверим всички клиенти, чийто „order_id“ може да бъде която и да е от стойностите, посочени в секцията за заявка. Добавяме целевата стойност като първата част на нашия израз и след това използваме клаузата WHERE с клаузата IN, за да създадем заявката.



Ето как изглежда нашата заявка:

PostgreSQL проверява колоната “order_id” в таблицата “customers” и връща всички записи, чийто “order_id” съвпада с някой от тези, които сме посочили в скобите.

За първи път използвахме случай на списък с цели числа от стойности. Можем също да проверим срещу низовете. Имайте предвид, че ако всички низове, които посочите, не съответстват на целевата стойност, нищо не се връща. Следващият пример съдържа някои низове, които не присъстват в нашата таблица. Такива низове ще бъдат пропуснати и само съвпадащите низове ще бъдат показани в следния изход:

2. Работа с IN(SELECT)

Понякога ръчното указване на списъка със стойности може да не работи. Можете да изберете да използвате оператор SELECT, за да извлечете списък със стойности от вашата таблица и да ги използвате за проверка спрямо целевата стойност. Добавяйки следната таблица към нашата база данни, можем да я комбинираме с предишната таблица „клиенти“, за да направим нашата подзаявка:

Да кажем, че искаме да покажем записите от таблицата „поръчки“ само ако целевата стойност (order_id) е в таблицата „клиенти“. Тук колоната „customers.order_id“ е нашият списък със стойности и ние проверяваме нейните стойности спрямо тези в колоната „orders.order_id“.

В този случай само три записа отговарят на търсенето и това е, което получаваме като изход за нашата клауза IN(SELECT) PostgreSQL.

3. Работа с клаузата NOT IN PostgreSQL

Използвайки предишната команда, можем да изберем да покажем другите стойности, които не съответстват на целевата стойност. За това правим обратното на това, което прави клаузата IN. Следователно ние отричаме командата да бъде NOT IN.

Ето как пишем нашата нова команда:

Забележете, че получаваме различен изход от този, който получихме в пример 2. Това е, защото работим с NOT IN вместо с клаузата IN.

В идеалния случай можете да добавяте NOT винаги, когато искате да отхвърлите резултатите, които получавате с клаузата IN на PostgreSQL. Приложенията са безкрайни. Когато искате да проверите стойностите и да видите тези, които съвпадат бързо, клаузата IN е най-добрият ви приятел.

Заключение

Клаузата IN работи с клаузата WHERE, за да провери целева стойност спрямо списък от стойности. Клаузата IN връща булево значение, което потвърждава дали целевата стойност има съвпадение в списъка със стойности, които сте посочили. Можете да посочите стойностите като литерали или да използвате оператора SELECT, за да създадете подзаявка, която да използвате. Дадохме три примера за това как можете да използвате клаузата IN на PostgreSQL. Надяваме се, че това ви даде представа как да разберете как да работите с клаузата PostgreSQL IN.