SQL условие IN

В этом учебном материале вы узнаете, как использовать SQL условие IN с синтаксисом и примерами.

Описание

SQL условие IN (иногда называемое оператором IN) позволяет легко проверить, соответствует ли выражение какому-либо значению в списке значений. Он используется, чтобы помочь уменьшить потребность в нескольких условиях OR в операторе SELECT, INSERT, UPDATE или DELETE.

Синтаксис

Синтаксис условия IN в SQL:

expression IN (value1, value2, .... value_n);

Или

expression IN (subquery);

Параметры или аргументы

expression
Это значение для тестирования.
value1, value2 ..., value_n
Это значения для проверки на соответствие expression. Если какое-либо из этих значений соответствует expression, условие IN будет иметь значение true.
subquery
Подзапрос - это оператор SELECT, чей набор результатов будет проверен на соответствие c expression. Если какое-либо из этих значений соответствует expression, условие IN будет иметь значение true.

Пример - использование условия IN с символьными значениями

Условие IN может использоваться с любым типом данных в SQL. Давайте посмотрим, как использовать условие IN с символьными (строковыми) значениями.
В этом примере у нас есть таблица suppliers со следующими данными:

supplier_id supplier_name city state
100 Yandex Moscow Russian
200 Google Lansing Michigan
300 Oracle Redwood City California
400 Bing Redmond Washington
500 Yahoo Sunnyvale Washington
600 DuckDuckGo Paoli Pennsylvania
700 Qwant Paris France
800 Facebook Menlo Park California
900 Electronic Arts San Francisco California

Введите следующий SQL оператор:

Будет выбрано 3 записи. Вот результаты, которые вы должны получить:

supplier_id supplier_name city state
100 Yandex Moscow Russian
300 Oracle Redwood City California
800 Facebook Menlo Park California

В этом примере будут возвращены все строки из таблицы suppliers, где supplier_name - Yandex, Oracle или Facebook. Поскольку в SELECT используется *, то все поля из таблицы suppliers будут отображаться в наборе результатов.

Это эквивалентно следующему оператору SQL:

Как вы можете видеть, использование условия IN облегчает чтение оператора и делает его более эффективным, чем использование нескольких условий OR.

Пример - использование условия IN с числовыми значениями

Далее давайте посмотрим, как использовать условие IN с числовыми значениями.

В этом примере у нас есть таблица customer и следующими данными:

customer_id first_name last_name favorite_website
4000 Justin Bieber google.com
5000 Selena Gomez bing.com
6000  Mila Kunis yahoo.com
7000 Tom Cruise oracle.com
8000 Johnny Depp NULL
9000 Russell Crowe google.com

Введите следующий SQL оператор:

Будет выбрано 4 записи. Вот результаты, которые вы должны получить:

customer_id first_name last_name favorite_website
5000 Selena Gomez bing.com
7000 Tom Cruise oracle.com
8000 Johnny Depp NULL
9000 Russell Crowe google.com

В этом примере будут возвращены все записи из таблицы customers, где customer_id равен 5000, 7000, 8000 или 9000.

Это эквивалентно следующему оператору SQL:

Пример - использование условия IN с оператором NOT

Наконец, давайте посмотрим, как использовать условие IN с оператором NOT. Оператор NOT используется для отмены условия. Когда мы используем оператор NOT с условием IN, мы создаем условие NOT IN. Это проверяет, нет ли выражения в списке.

В этом примере у нас есть таблица products со следующими данными:

product_id product_name category_id
1 Pear 50
2 Banana 50
3 Orange 50
4 Apple 50
5 Bread 75
6 Sliced Ham 25
7 Kleenex NULL

Введите следующий SQL оператор:

Будет выбрано 4 записи. Вот результаты, которые вы получите:

product_id product_name category_id
3 Orange 50
4 Apple 50
6 Sliced Ham 25
7 Kleenex NULL

В этом примере будут возвращены все строки из таблицы products, где product_name не является Pear, Banana или Bread. Иногда более эффективно перечислять значения, которые вы не хотите, в отличие от значений, которые вы хотите.
Это эквивалентно следующему оператору SQL:

Как видите, эквивалентный оператор записывается с использованием условий AND вместо условий OR, поскольку условие IN отменяется.