Operator IN w SQL
Operator IN w SQL służy do sprawdzania, czy wartość z danej kolumny znajduje się na liście podanych wartości. Jest najczęściej używany w klauzuli WHERE, czyli przy filtrowaniu rekordów.
Składnia
SELECT kolumna1, kolumna2
FROM tabela
WHERE kolumna IN (wartosc1, wartosc2, wartosc3);
Warunek jest spełniony, jeśli wartość kolumny jest równa którejkolwiek wartości z listy.
Przykład
SELECT imie, pesel, wiek
FROM dane
WHERE wiek IN (18, 30);
To zapytanie wybierze tylko te rekordy, w których kolumna wiek ma wartość 18 albo 30. Nie oznacza to przedziału od 18 do 30.
Czyli zostaną wybrane osoby:
- mające dokładnie 18 lat,
- mające dokładnie 30 lat.
Nie zostaną wybrane osoby mające np. 19, 25 ani 29 lat.
IN a OR
Operator IN można często zastąpić kilkoma warunkami połączonymi operatorem OR.
WHERE wiek IN (18, 30)
jest równoważne:
WHERE wiek = 18 OR wiek = 30
IN a BETWEEN
Nie należy mylić IN z BETWEEN.
WHERE wiek BETWEEN 18 AND 30
oznacza wartości od 18 do 30 włącznie, czyli np. 18, 19, 20, ..., 30.
Natomiast:
WHERE wiek IN (18, 30)
oznacza tylko dwie konkretne wartości: 18 i 30.
Najważniejsze do egzaminu
IN (18, 30) oznacza: wartość jest równa 18 lub 30, a nie: „wartość jest w przedziale od 18 do 30”.