Podsumowanie :w tym samouczku dowiesz się, jak używać SQLite IN operator, aby określić, czy wartość pasuje do dowolnej wartości z listy wartości lub wyniku podzapytania.
Wprowadzenie do SQLite IN operator
SQLite IN Operator określa, czy wartość pasuje do dowolnej wartości z listy lub podzapytania. Składnia IN operator jest następujący:
expression [NOT] IN (value_list|subquery);Code language: SQL (Structured Query Language) (sql)
expression może być dowolnym poprawnym wyrażeniem lub kolumną tabeli.
Lista wartości jest listą wartości stałych lub zestawem wyników pojedynczej kolumny zwróconej przez podzapytanie. Zwrócony typ wyrażenia i wartości na liście muszą być takie same.
IN operator zwraca prawdę lub fałsz w zależności od tego, czy wyrażenie pasuje do dowolnej wartości na liście wartości, czy nie. Aby zanegować listę wartości, użyj NOT IN operatora.
SQLite IN przykłady operatorów
Użyjemy Tracks tabela z przykładowej bazy danych do demonstracji.
Poniższa instrukcja używa IN operatora, aby zapytać o utwory, których identyfikator typu nośnika to 1 lub 2.
SELECT
TrackId,
Name,
Mediatypeid
FROM
Tracks
WHERE
MediaTypeId IN (1, 2)
ORDER BY
Name ASC;Code language: SQL (Structured Query Language) (sql) Wypróbuj
To zapytanie używa OR operator zamiast IN operator, aby zwrócić ten sam zestaw wyników, co w powyższym zapytaniu:
SELECT
TrackId,
Name,
MediaTypeId
FROM
Tracks
WHERE
MediaTypeId = 1 OR MediaTypeId = 2
ORDER BY
Name ASC;Code language: SQL (Structured Query Language) (sql) Wypróbuj
Jak widać z zapytań, używając IN operatora jest znacznie krótszy.
Jeśli masz zapytanie, które używa wielu OR operatorów, możesz rozważyć użycie IN zamiast tego, aby zapytanie było bardziej czytelne.
SQLite IN operator z przykładem podzapytania
Poniższe zapytanie zwraca listę identyfikatorów albumów o identyfikatorze wykonawcy 12:
SELECT albumid
FROM albums
WHERE artistid = 12;Code language: SQL (Structured Query Language) (sql) Wypróbuj
Aby uzyskać utwory należące do artysty o identyfikatorze 12, możesz połączyć IN operator z podzapytaniem w następujący sposób:
SELECT
TrackId,
Name,
AlbumId
FROM
Tracks
WHERE
AlbumId IN (
SELECT
AlbumId
FROM
Albums
WHERE
ArtistId = 12
);Code language: SQL (Structured Query Language) (sql) Wypróbuj
W tym przykładzie:
- Najpierw podzapytanie zwraca listę identyfikatorów albumów należących do identyfikatora wykonawcy 12.
- Następnie zewnętrzne zapytanie zwraca wszystkie utwory, których identyfikator albumu jest zgodny z listą identyfikatorów albumu zwróconą przez podzapytanie.
SQLite NIE W przykładach
Poniższa instrukcja zwraca listę utworów, których identyfikator gatunku nie znajduje się na liście (1,2,3).
SELECT
trackid,
name,
genreid
FROM
tracks
WHERE
genreid NOT IN (1, 2,3);Code language: SQL (Structured Query Language) (sql) Wypróbuj
W tym samouczku nauczyłeś się korzystać z SQLite IN operatora, aby dopasować wartość do listy wartości lub podzapytania.