

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Como usar o operador `IN` com a Instrução `SELECT` em uma consulta no Amazon Keyspaces
<a name="in.select"></a>

**SELECT IN**

Você pode consultar dados de tabelas usando a instrução `SELECT`, que lê uma ou mais colunas para uma ou mais linhas em uma tabela e retorna um conjunto de resultados contendo as linhas correspondentes à solicitação. Uma instrução `SELECT` contém uma `select_clause` que determina quais colunas devem ser lidas e retornadas no conjunto de resultados. A cláusula pode conter instruções para transformar os dados antes de retorná-los. A cláusula opcional `WHERE` especifica quais linhas devem ser consultadas e é composta por relações nas colunas que fazem parte da chave primária. O Amazon Keyspaces oferece suporte à palavra-chave `IN` na cláusula `WHERE`. Esta seção usa exemplos para mostrar como o Amazon Keyspaces processa instruções `SELECT` com a palavra-chave `IN`.

Esses exemplos demonstram como o Amazon Keyspaces divide a instrução `SELECT` com a palavra-chave `IN` em *subconsultas*. Neste exemplo, usamos uma tabela com o nome `my_keyspace.customers`. A tabela tem uma coluna de chave primária `department_id`, duas colunas de clustering `sales_region_id` e `sales_representative_id` e uma coluna que contém o nome do cliente na coluna `customer_name`.

```
SELECT * FROM my_keyspace.customers;

         department_id | sales_region_id | sales_representative_id | customer_name
        ---------------+-----------------+-------------------------+--------------
          0            |        0        |            0            |    a
          0            |        0        |            1            |    b
          0            |        1        |            0            |    c
          0            |        1        |            1            |    d
          1            |        0        |            0            |    e
          1            |        0        |            1            |    f
          1            |        1        |            0            |    g
          1            |        1        |            1            |    h
```

Usando essa tabela, você pode executar a instrução `SELECT` a seguir para encontrar os clientes nos departamentos e regiões de vendas nos quais você está interessado com a palavra-chave `IN` na cláusula `WHERE`. A instrução a seguir é um exemplo disso.

```
SELECT * FROM my_keyspace.customers WHERE department_id IN (0, 1) AND sales_region_id IN (0, 1);
```

O Amazon Keyspaces divide essa instrução em quatro subconsultas, conforme mostrado na saída a seguir.

```
SELECT * FROM my_keyspace.customers WHERE department_id = 0 AND sales_region_id = 0;

 department_id | sales_region_id | sales_representative_id | customer_name
---------------+-----------------+-------------------------+--------------
  0            |        0        |           0             |    a
  0            |        0        |           1             |    b

SELECT * FROM my_keyspace.customers WHERE department_id = 0 AND sales_region_id = 1;

 department_id | sales_region_id | sales_representative_id | customer_name
---------------+-----------------+-------------------------+--------------
  0            |        1        |          0              |    c
  0            |        1        |          1              |    d

SELECT * FROM my_keyspace.customers WHERE department_id = 1 AND sales_region_id = 0;

 department_id | sales_region_id | sales_representative_id | customer_name
---------------+-----------------+-------------------------+--------------
  1            |        0        |          0              |    e
  1            |        0        |          1              |    f

SELECT * FROM my_keyspace.customers WHERE department_id = 1 AND sales_region_id = 1;

 department_id | sales_region_id | sales_representative_id | customer_name
---------------+-----------------+-------------------------+--------------
  1            |        1        |           0             |    g
  1            |        1        |           1             |    h
```

Quando a palavra-chave `IN` é usada, o Amazon Keyspaces pagina automaticamente os resultados em qualquer um dos seguintes casos:
+ Depois que cada 10ª subconsulta for processada.
+ Depois de processar 1MB de E/S lógica.
+ Se você configurou um `PAGE SIZE`, o Amazon Keyspaces pagina depois de ler o número de consultas para processamento com base no conjunto `PAGE SIZE`.
+ Quando você usa a palavra-chave `LIMIT` para reduzir o número de linhas retornadas, o Amazon Keyspaces pagina depois de ler o número de consultas para processamento com base no conjunto `LIMIT`.

 A tabela a seguir é usada para ilustrar isso com um exemplo.

Para obter mais informações sobre paginação, consulte [Paginar resultados no Amazon Keyspaces](paginating-results.md).

```
SELECT * FROM my_keyspace.customers;

         department_id | sales_region_id | sales_representative_id | customer_name
        ---------------+-----------------+-------------------------+--------------
          2            |        0        |          0              |    g
          2            |        1        |          1              |    h
          2            |        2        |          2              |    i
          0            |        0        |          0              |    a
          0            |        1        |          1              |    b
          0            |        2        |          2              |    c
          1            |        0        |          0              |    d
          1            |        1        |          1              |    e
          1            |        2        |          2              |    f
          3            |        0        |          0              |    j
          3            |        1        |          1              |    k
          3            |        2        |          2              |    l
```

Você pode executar a instrução a seguir nessa tabela para ver como a paginação funciona.

```
SELECT * FROM my_keyspace.customers WHERE department_id IN (0, 1, 2, 3) AND sales_region_id IN (0, 1, 2) AND sales_representative_id IN (0, 1);
```

O Amazon Keyspaces processa essa declaração como 24 subconsultas, porque a cardinalidade do produto cartesiano de todos os termos `IN` contidos nessa consulta é 24.

```
 department_id | sales_region_id | sales_representative_id | customer_name
---------------+-----------------+-------------------------+--------------
  0            |        0        |          0              |    a
  0            |        1        |          1              |    b
  1            |        0        |          0              |    d
  1            |        1        |          1              |    e

---MORE---
 department_id | sales_region_id | sales_representative_id | customer_name
---------------+-----------------+-------------------------+--------------
  2            |        0        |          0              |    g
  2            |        1        |          1              |    h
  3            |        0        |          0              |    j

---MORE---
 department_id | sales_region_id | sales_representative_id | customer_name
---------------+-----------------+-------------------------+--------------
  3            |        1        |          1              |    k
```

Este exemplo mostra como você pode usar a cláusula `ORDER BY` em uma instrução `SELECT` com a palavra-chave `IN`.

```
SELECT * FROM my_keyspace.customers WHERE department_id IN (3, 2, 1) ORDER BY sales_region_id DESC;
        
         department_id | sales_region_id | sales_representative_id | customer_name
        ---------------+-----------------+-------------------------+--------------
          3            |        2        |          2              |    l
          3            |        1        |          1              |    k
          3            |        0        |          0              |    j
          2            |        2        |          2              |    i
          2            |        1        |          1              |    h
          2            |        0        |          0              |    g
          1            |        2        |          2              |    f
          1            |        1        |          1              |    e
          1            |        0        |          0              |    d
```

As subconsultas são processadas na ordem em que as colunas da chave de partição e da chave clustering são apresentadas na consulta. No exemplo abaixo, as subconsultas para o valor da chave de partição “2” são processadas primeiro, seguidas pelas subconsultas para o valor da chave de partição “3” e “1”. Os resultados de uma determinada subconsulta são ordenados de acordo com a cláusula de ordenação da consulta, se presente, ou com a ordem de clustering da tabela definida durante sua criação. 

```
SELECT * FROM my_keyspace.customers WHERE department_id IN (2, 3, 1) ORDER BY sales_region_id DESC;

         department_id | sales_region_id | sales_representative_id | customer_name
        ---------------+-----------------+-------------------------+--------------
          2            |        2        |          2              |    i
          2            |        1        |          1              |    h
          2            |        0        |          0              |    g
          3            |        2        |          2              |    l
          3            |        1        |          1              |    k
          3            |        0        |          0              |    j
          1            |        2        |          2              |    f
          1            |        1        |          1              |    e
          1            |        0        |          0              |    d
```