Оператор IN используется с оператором WHERE для сопоставления значений в списке. Например:
1 2 3 |
SELECT first_name, country FROM Customers WHERE country IN ('USA', 'UK'); |
Здесь мы выбираем строки, если страна (country) — USA
или UK
.
Оператор IN
также можно использовать для выбора строк, которые содержат указанное значение. Например:
1 2 3 |
SELECT first_name, country FROM Customers WHERE 'USA' IN (country); |
Здесь мы выбираем строки, в которых в поле country находится значение USA
.
Оператор NOT IN в SQL
Оператор NOT IN используется для исключения строк, соответствующих указанным значениям в списке. Он возвращает все строки, кроме исключенных. Например:
1 2 3 |
SELECT first_name, country FROM Customers WHERE country NOT IN ('UK', 'UAE'); |
Здесь мы выбираем все строки, в которых в поле country нет значения UK
или UAE
.
Примечание: Работа оператора IN
противоположна работе оператора NOT
. Узнать больше вы можете из урока «Операторы AND, OR и NOT в SQL».
Оператор IN с повторяющимися значениями в SQL
Оператор IN
игнорирует повторяющиеся значения (дубли) в списке. Например, следующий код:
1 2 3 |
SELECT first_name, country FROM Customers WHERE country IN ('USA', 'UK', 'USA'); |
равнозначен
1 2 3 |
SELECT first_name, country FROM Customers WHERE country IN ('USA', 'UK'); |
Оператор IN с подзапросом в SQL
Предположим, нам нужны сведения о клиентах, разместивших заказ. Мы можем это сделать с помощью следующего подзапроса:
1 2 3 4 5 6 |
SELECT customer_id, first_name FROM Customers WHERE customer_id IN ( SELECT customer_id FROM Orders ); |
У нас есть 2 таблицы — Customers (Клиенты) и Orders (Заказы). Мы выбираем идентификатор клиента (customer_id) и его имя (first_name) из таблицы Customers, только если этот же идентификатор также находится и в таблице Orders.