Резюме :в този урок ще научите как да използвате SQLite IN
оператор, за да определи дали дадена стойност съвпада с някоя стойност в списък със стойности или резултат от подзаявка.
Въведение в SQLite IN
оператор
SQLite IN
операторът определя дали дадена стойност съвпада с която и да е стойност в списък или подзаявка. Синтаксисът на IN
операторът е както следва:
expression [NOT] IN (value_list|subquery);
Code language: SQL (Structured Query Language) (sql)
expression
може да бъде всеки валиден израз или колона от таблица.
Списъкът със стойности е списък с фиксирани стойности или набор от резултати от една колона, върнати от подзаявка. Върнатият тип израз и стойностите в списъка трябва да са еднакви.
IN
Операторът връща true или false в зависимост от това дали изразът съвпада с някоя стойност в списъка със стойности или не. За да отмените списъка със стойности, използвате NOT IN
оператор.
SQLite IN
примери за оператор
Ще използваме Tracks
таблица от примерната база данни за демонстрацията.

Следното изявление използва IN
оператор за запитване на песните, чийто идентификатор на тип носител е 1 или 2.
SELECT
TrackId,
Name,
Mediatypeid
FROM
Tracks
WHERE
MediaTypeId IN (1, 2)
ORDER BY
Name ASC;
Code language: SQL (Structured Query Language) (sql)
Опитайте го

Тази заявка използва OR
оператор вместо IN
оператор, за да върне същия набор от резултати като горната заявка:
SELECT
TrackId,
Name,
MediaTypeId
FROM
Tracks
WHERE
MediaTypeId = 1 OR MediaTypeId = 2
ORDER BY
Name ASC;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Както можете да видите от заявките, с помощта на IN
операторът е много по-кратък.
Ако имате заявка, която използва много OR
оператори, можете да обмислите използването на IN
вместо оператор, за да направи заявката по-четлива.
SQLite IN
оператор с пример за подзаявка
Следната заявка връща списък с идентификатор на албума на изпълнителя 12:
SELECT albumid
FROM albums
WHERE artistid = 12;
Code language: SQL (Structured Query Language) (sql)
Опитайте го

За да получите песните, които принадлежат на идентификатор на изпълнителя 12, можете да комбинирате IN
оператор с подзаявка, както следва:
SELECT
TrackId,
Name,
AlbumId
FROM
Tracks
WHERE
AlbumId IN (
SELECT
AlbumId
FROM
Albums
WHERE
ArtistId = 12
);
Code language: SQL (Structured Query Language) (sql)
Опитайте го

В този пример:
- Първо, подзаявката връща списък с идентификатори на албуми, които принадлежат на идентификатор 12 на изпълнителя.
- След това външната заявка връща всички записи, чийто идентификатор на албума съвпада със списъка с идентификатори на албума, върнат от подзаявката.
SQLite НЕ В примери
Следното изявление връща списък с песни, чийто идентификатор на жанра не е в списък от (1,2,3).
SELECT
trackid,
name,
genreid
FROM
tracks
WHERE
genreid NOT IN (1, 2,3);
Code language: SQL (Structured Query Language) (sql)
Опитайте го

В този урок научихте как да използвате SQLite IN
оператор за съпоставяне на стойност със списък със стойности или подзаявка.