В этом учебном материале вы узнаете, как использовать SQL условие IN с синтаксисом и примерами.
Описание
SQL условие IN (иногда называемое оператором IN) позволяет легко проверить, соответствует ли выражение какому-либо значению в списке значений. Он используется, чтобы помочь уменьшить потребность в нескольких условиях OR в операторе SELECT, INSERT, UPDATE или DELETE.
Синтаксис
Синтаксис условия IN в SQL:
Или
Параметры или аргументы
- 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 | Lansing | Michigan | |
300 | Oracle | Redwood City | California |
400 | Bing | Redmond | Washington |
500 | Yahoo | Sunnyvale | Washington |
600 | DuckDuckGo | Paoli | Pennsylvania |
700 | Qwant | Paris | France |
800 | Menlo Park | California | |
900 | Electronic Arts | San Francisco | California |
Введите следующий SQL оператор:
1 2 3 |
SELECT * FROM suppliers WHERE supplier_name IN ('Yandex', 'Oracle', 'Facebook'); |
Будет выбрано 3 записи. Вот результаты, которые вы должны получить:
supplier_id | supplier_name | city | state |
---|---|---|---|
100 | Yandex | Moscow | Russian |
300 | Oracle | Redwood City | California |
800 | Menlo Park | California |
В этом примере будут возвращены все строки из таблицы suppliers, где supplier_name - Yandex, Oracle или Facebook. Поскольку в SELECT используется *
, то все поля из таблицы suppliers будут отображаться в наборе результатов.
Это эквивалентно следующему оператору SQL:
1 2 3 4 5 |
SELECT * FROM suppliers WHERE supplier_name = 'Yandex' OR supplier_name = 'Oracle' OR supplier_name = 'Facebook'; |
Как вы можете видеть, использование условия 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 оператор:
1 2 3 |
SELECT * FROM customers WHERE customer_id IN (5000, 7000, 8000, 9000); |
Будет выбрано 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:
1 2 3 4 5 6 |
SELECT * FROM customers WHERE customer_id = 5000 OR customer_id = 7000 OR customer_id = 8000 OR customer_id = 9000; |
Пример - использование условия 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 оператор:
1 2 3 |
SELECT * FROM products WHERE product_name NOT IN ('Pear', 'Banana', 'Bread'); |
Будет выбрано 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:
1 2 3 4 5 |
SELECT * FROM products WHERE product_name <> 'Pear' AND product_name <> 'Banana' AND product_name <> 'Bread'; |
Как видите, эквивалентный оператор записывается с использованием условий AND вместо условий OR, поскольку условие IN отменяется.