

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Uso del operador `IN` con la instrucción `SELECT` en una consulta en Amazon Keyspaces
<a name="in.select"></a>

**SELECT IN**

Puede consultar datos de tablas mediante la instrucción `SELECT`, que lee una o varias columnas de una o varias filas de una tabla y devuelve un conjunto de resultados que contiene las filas que coinciden con la solicitud. Una instrucción `SELECT` contiene una cláusula `select_clause` que determina qué columnas leer y devolver en el conjunto de resultados. La cláusula puede contener instrucciones para transformar los datos antes de devolverlos. La cláusula `WHERE` opcional especifica qué filas deben consultarse y se compone de relaciones sobre las columnas que forman parte de la clave principal. Amazon Keyspaces admite la palabra clave `IN` en la cláusula `WHERE`. En esta sección se utilizan ejemplos para mostrar cómo procesa Amazon Keyspaces las instrucciones `SELECT` con la palabra clave `IN`.

Estos ejemplos demuestran cómo Amazon Keyspaces descompone la instrucción `SELECT` con la palabra clave `IN` en *subconsultas*. En este ejemplo, utilizamos una tabla con el nombre `my_keyspace.customers`. La tabla tiene una columna de clave principal `department_id`, dos columnas de agrupación `sales_region_id` y `sales_representative_id`, y una columna que contiene el nombre del cliente en la columna `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
```

Con esta tabla, puede ejecutar la instrucción `SELECT` siguiente para encontrar los clientes en los departamentos y regiones de ventas que le interesen con la palabra clave `IN` en la cláusula `WHERE`. La siguiente instrucción es un ejemplo de ello.

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

Amazon Keyspaces divide esta instrucción en cuatro subconsultas como se muestra en el siguiente resultado.

```
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
```

Al utilizar la palabra clave `IN`, Amazon Keyspaces pagina automáticamente los resultados en cualquiera de los siguientes casos:
+ Después de procesarse cada 10.ª subconsulta.
+ Después de procesar 1 MB de E/S lógica.
+ Si configuró un `PAGE SIZE`, Amazon Keyspaces pagina después de leer el número de consultas por procesar en función del ajuste `PAGE SIZE`.
+ Al utilizar la palabra clave `LIMIT` para reducir el número de filas devueltas, Amazon Keyspaces pagina después de leer el número de consultas por procesar en función del ajuste `LIMIT`.

 La siguiente tabla sirve para ilustrar esto con un ejemplo.

Para obtener más información sobre paginación, consulte [Paginación de resultados en 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
```

Puede ejecutar la siguiente instrucción en esta tabla para ver cómo funciona la paginación.

```
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);
```

Amazon Keyspaces procesa esta instrucción como 24 subconsultas, porque la cardinalidad del producto cartesiano de todos los términos `IN` contenidos en esta consulta es 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
```

En este ejemplo se muestra cómo puede utilizar la cláusula `ORDER BY` en una instrucción `SELECT` con la palabra clave `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
```

Las subconsultas se procesan en el orden en que las columnas de clave de partición y clave de agrupación se presentan en la consulta. En el ejemplo siguiente, las subconsultas para el valor de clave de partición “2” se procesan primero, seguidas de las subconsultas para el valor de clave de partición “3” y “1”. Los resultados de una subconsulta dada se ordenan según la cláusula de ordenación de la consulta, si está presente, o el orden de agrupación de la tabla definido durante la creación de la tabla. 

```
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
```