ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Предложение IN в MySQL

Шестнадцатеричный цветовой код хранится в двоичном типе данных в MySQL

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

 

Базовый синтаксис

Оператор IN достаточно прост. Он работает, проверяя, соответствует ли набор указанному значению.

Общий синтаксис запроса:

SELECT col_names FROM table_name WHERE expression IN (value_sets);

В приведенном выше синтаксисе мы указываем выполняемую функцию. Это может быть SELECT, INSERT, DELETE, UPDATE и т. д.

Затем мы указываем имя таблицы, из которой нужно выполнить указанное выше действие.

Следующая часть – это предложение WHERE, в котором мы указываем выражение или значение для оценки. Это значение, которое мы тестируем в наборах значений в правой части предложения IN.

В правой части предложения мы указываем значения, по которым следует искать соответствующее выражение.

Если предложение IN находит совпадение в указанном наборе значений, оно возвращает 1, указывающую истину, и 0, указывающую ложь.

 

Примеры предложений MySQL IN

Вот примеры, иллюстрирующие предложение IN:

 

Пример 1

Простым вариантом использования оператора IN является проверка единственного значения в наборе. Например, мы можем проверить, входит ли символ «A» в набор символов.

SELECT 'A' IN ('A', 'B', 'C', 'D');

В приведенном выше примере мы проверяем, входит ли символ «A» в набор символов ABCD.

Приведенный выше запрос должен вернуть 1, если он истинен, как показано в выходных данных ниже:

+-----------------------------+
| 'A' IN ('A', 'B', 'C', 'D') |
+-----------------------------+
|                           1 |
+-----------------------------+
1 row in set (0.00 sec)

Пример 2

Аналогичный случай применяется, если значение не входит в набор значений. Например, приведенный ниже запрос вернет 0 или false.

SELECT 'Z' IN ('A', 'B', 'C', 'D');

Поскольку Z не входит в набор, оператор возвращает false, как показано:

+-----------------------------+
| 'Z' IN ('A', 'B', 'C', 'D') |
+-----------------------------+
|                           0 |
+-----------------------------+

Пример 3

Проиллюстрируем запрос IN на более практическом примере. Давайте возьмем таблицу actor из образца базы данных.

SELECT * FROM actor LIMIT 10;
+----------+------------+--------------+---------------------+
| actor_id | first_name | last_name    | last_update         |
+----------+------------+--------------+---------------------+
|        1 | PENELOPE   | GUINESS      | 2021-08-25 11:22:21 |
|        2 | NICK       | WAHLBERG     | 2021-08-25 11:22:21 |
|        3 | ED         | CHASE        | 2021-08-25 11:22:21 |
+----------+------------+--------------+---------------------+

В приведенном выше примере таблицы у нас есть столбцы act_id, first_name, last_name и last_update.

Мы можем использовать запрос IN, чтобы получить только столбцы, в которых первое имя является набором значений.

Рассмотрим запрос ниже:

SELECT * FROM actor WHERE first_name IN ('BETTE', 'JOHN', 'NICK');

Приведенный выше запрос должен возвращать столбцы только для указанных субъектов. Пример результата ниже:

+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update         |
+----------+------------+-----------+---------------------+
|        2 | NICK       | WAHLBERG  | 2021-08-25 11:22:21 |
|        6 | BETTE      | NICHOLSON | 2021-08-25 11:22:21 |
|       44 | NICK       | STALLONE  | 2021-08-25 11:22:21 |
|      166 | NICK       | DEGENERES | 2021-08-25 11:22:21 |
|      192 | JOHN       | SUVARI    | 2021-08-25 11:22:21 |
+----------+------------+-----------+---------------------+

 

 

Пример 4

Мы также можем использовать оператор IN для проверки числовых значений. Давайте изменим ситуацию и воспользуемся таблицей film из базы данных. Предположим, мы хотим получить только те фильмы, у которых Rental_duration равно 7.

SELECT film_id, title, rental_duration FROM film WHERE rental_duration IN (7) LIMIT 5;

В приведенном выше примере запроса должны быть возвращены столбцы, в которых Rental_duration равно 7.

+---------+------------------+-----------------+
| film_id | title            | rental_duration |
+---------+------------------+-----------------+
|       3 | ADAPTATION HOLES |               7 |
|      27 | ANONYMOUS HUMAN  |               7 |
|      36 | ARGONAUTS TOWN   |               7 |
+---------+------------------+-----------------+
3 rows in set (0.00 sec)

Пример 5 – Отрицание

MySQL также предоставляет отрицание для оператора IN. Чтобы использовать его, добавьте ключевое слово NOT перед IN как:

SELECT * FROM table_name WHERE expression NOT IN (values);

Например, возьмем фильмы, в названии которых нет буквы S.

SELECT film_id, title, rental_duration FROM film WHERE 'S' NOT IN (title) LIMIT 5;

Ниже приведен пример вывода:

+---------+------------------+-----------------+
| film_id | title            | rental_duration |
+---------+------------------+-----------------+
|       1 | ACADEMY DINOSAUR |               6 |
|       2 | ACE GOLDFINGER   |               3 |
|       3 | ADAPTATION HOLES |               7 |
+---------+------------------+-----------------+
3 rows in set (0.00 sec)

В заключение

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

Exit mobile version