in é um operador lógico que compara um valor com uma lista de valores. in retorna true(verdadeiro) se a expressão corresponder a qualquer valor dentro da lista.
expressao IN (v1, v2, v3, ...)
A lista de valores pode ser também um resultado de um instrução select. select entre parênteses deve retornar uma lista de valores de uma coluna, ou a consulta resultará em um erro.
expressao in (instrucao-select)
O operador in geralmente é usado junto com where.
O Operador NOT
O operador not nega ou inverte o operador in
expressao NOT IN (v1, v2, v3, ...)
Exemplos Usando o Operador in e not in
Usaremos a tabela countries do banco nation para demonstrar os exemplos.
+---------------+---------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+---------------+------+-----+---------+----------------+ | country_id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(50) | YES | | NULL | | | area | decimal(10,2) | NO | | NULL | | | national_day | date | YES | | NULL | | | country_code2 | char(2) | NO | UNI | NULL | | | country_code3 | char(3) | NO | UNI | NULL | | | region_id | int(11) | NO | MUL | NULL | | +---------------+---------------+------+-----+---------+----------------+
#1 Execute select name, region_id from countries where region_id in (1,3) order by name;
ariaDB [nation]> select name, region_id from countries where region_id in (1,3) order by name; +--------------------------------------+-----------+ | name | region_id | +--------------------------------------+-----------+ | Angola | 3 | | Anguilla | 1 | | Antigua and Barbuda | 1 | | Aruba | 1 | | Bahamas | 1 | | Barbados | 1 | | Cameroon | 3 | | Cayman Islands | 1 | | Central African Republic | 3 | | Chad | 3 | | Congo | 3 | | Cuba | 1 | | Dominica | 1 | | Dominican Republic | 1 | | Equatorial Guinea | 3 | | Gabon | 3 | | Grenada | 1 | | Guadeloupe | 1 |
#2 A instrução a seguir retorna uma lista de ID da America:
select region_id from regions where name like ‘%America%’;
MariaDB [nation]> select region_id from regions where name like '%America%'; +-----------+ | region_id | +-----------+ | 6 | | 14 | | 15 | +-----------+
Podemos fazer isso:
select name, region_id from countries where region_id in (select region_id from regions where name like ‘%America%’) ;
MariaDB [nation]> select name, region_id from countries where region_id in (select region_id from regions where name like '%America%') ; +---------------------------+-----------+ | name | region_id | +---------------------------+-----------+ | Argentina | 6 | | Bolivia | 6 | | Brazil | 6 | | Chile | 6 | | Colombia | 6 | | Ecuador | 6 | | Falkland Islands | 6 | | French Guiana | 6 | | Guyana | 6 | | Peru | 6 | | Paraguay | 6 | | Suriname | 6 | | Uruguay | 6 | | Venezuela | 6 | | Belize | 14 | | Costa Rica | 14 | | Guatemala | 14 | | Honduras | 14 |
Neste tutorial, você aprendeu como usar o operador MariaDB in para fazer a correspondência de um valor com uma lista de valores.