PostgreSQL IN, no IN con ejemplos

⚡ Resumen inteligente

PostgreSQL El operador IN comprueba si un valor aparece dentro de una lista o subconsulta dentro de una cláusula WHERE, reemplazando múltiples condiciones OR en las sentencias SELECT, UPDATE, INSERT y DELETE para un filtrado más limpio, rápido y legible.

  • 📋 Sintaxis: value IN (list) devuelve verdadero cuando el valor coincide con algún elemento de la lista.
  • 🔤 Listas de personajes: Encierre los valores de texto entre comillas simples dentro de los paréntesis.
  • 🔢 Listas numéricas: Compare los números directamente, sin comillas, para encontrar coincidencias exactas.
  • 🚫 NO ESTÁ EN: Devuelve las filas cuyo valor no está presente en la lista proporcionada.
  • ⚠️ Trampa NULL: Un valor NULL dentro de NOT IN puede devolver silenciosamente cero filas.
  • 🤖 Consultas de IA: Los asistentes incorporan cláusulas IN y señalan los riesgos de valores NULL y de rendimiento.

PostgreSQL DENTRO, NO DENTRO con ejemplos

¿Qué es PostgreSQL ¿EN?

El operador IN se utiliza en una cláusula WHERE para comprobar si un valor está presente en una lista de otros valores. La operación IN ayuda a reducir la necesidad de múltiples condiciones OR en las sentencias SELECT, UPDATE, INSERT o DELETE.

Sintaxis

El operador IN toma la siguiente sintaxis:

value IN (value_1, value_2, ...)

El valor es el valor que está buscando en la lista.

El valor_1, valor_2… son los valores de la lista.

Si el valor se encuentra en la lista, el operador devolverá un verdadero.

La lista puede ser un conjunto de números o cadenas, o incluso el resultado de salida de un Instrucción SELECT como se muestra a continuación:

value IN (SELECT value FROM table-name);

La declaración colocada entre paréntesis se conoce como subconsulta.

PostgreSQL CON Carácter

Permítanos demostrar cómo puede utilizar el operador IN con valores de caracteres.

Considere la siguiente tabla:

Empleados:

PostgreSQL CON Carácter

Ejecutemos la siguiente consulta en la tabla anterior:

SELECT * FROM Employees WHERE name IN ('James John', 'Mercy Bush', 'Kate Joel');

Devuelve lo siguiente:

PostgreSQL EN Con resultado de carácter

Tenemos una lista de tres nombres. Buscamos si alguno de estos nombres aparece en la columna "Nombre" de la tabla "Empleados". Kate Joel coincidió con uno de los registros de la tabla y se devolvieron sus detalles.

PostgreSQL EN Con Numérico

Ahora, veamos cómo podemos utilizar el operador IN con valores numéricos.

Considere la tabla de precios que figura a continuación:

Precio:

PostgreSQL EN Con Numérico

Podemos ejecutar la siguiente consulta en la tabla:

SELECT * FROM Price WHERE price IN (200, 308, 250, 550);

Esto devuelve lo siguiente:

PostgreSQL EN Con resultado numérico

Hemos creado una lista con 4 valores numéricos. Estamos comprobando si podemos hacer coincidir alguno de estos valores con los valores incluidos en la columna de precio de la tabla de precios. Se han encontrado dos valores coincidentes y se han obtenido sus detalles.

Usando el NOT Operator

El operador IN se puede utilizar junto con el operador NOT. Devuelve los valores que no se encuentran en la columna especificada. Para demostrarlo, utilizaremos la tabla Price.

SELECT * FROM Price WHERE price NOT IN (200, 400, 190, 230);

Esto devolverá lo siguiente:

PostgreSQL EN Usando el operador NOT

Hemos creado una lista con 4 valores numéricos. Estamos comprobando la columna de precios de la tabla de precios en busca de valores que no formen parte de la lista. No se encontraron dos valores, 250 y 300, por lo que se han devuelto sus detalles.

Usando pgAdmin

Más allá de la consola SQL, las mismas consultas IN y NOT IN se pueden ejecutar visualmente a través de la interfaz pgAdmin.

Con Carácter

Para lograr lo mismo a través de pgAdmin, haga esto:

Paso 1) Inicie sesión en su cuenta pgAdmin.

Paso 2)

  1. En la barra de navegación de la izquierda, haga clic en Bases de datos.
  2. Haga clic en Demostración.

Usando pgAdmin con carácter

Paso 3) Escriba la consulta en el editor de consultas:

SELECT * FROM Employees WHERE name IN ('James John', 'Mercy Bush', 'Kate Joel');

Paso 4) Haga clic en el botón Ejecutar.

Uso de pgAdmin con consulta de caracteres

Debería devolver lo siguiente:

Usando pgAdmin con resultado de carácter

Con numérico

Para lograr lo mismo a través de pgAdmin, haga esto:

Paso 1) Inicie sesión en su cuenta pgAdmin.

Paso 2)

  1. En la barra de navegación de la izquierda, haga clic en Bases de datos.
  2. Haga clic en Demostración.

Usando pgAdmin con numérico

Paso 3) Escriba la consulta en el editor de consultas:

SELECT * FROM Price WHERE price IN (200, 308, 250, 550);

Paso 4) Haga clic en el botón Ejecutar.

Uso de pgAdmin con consultas numéricas

Debería devolver lo siguiente:

Usando pgAdmin con resultado numérico

Usando el NOT Operator

Para lograr lo mismo a través de pgAdmin, haga esto:

Paso 1) Inicie sesión en su cuenta pgAdmin.

Paso 2)

  1. En la barra de navegación de la izquierda, haga clic en Bases de datos.
  2. Haga clic en Demostración.

Uso del operador NOT en pgAdmin

Paso 3) Escriba la consulta en el editor de consultas:

SELECT * FROM Price WHERE price NOT IN (200, 400, 190, 230);

Paso 4) Haga clic en el botón Ejecutar.

Uso del operador NOT en consultas de pgAdmin

Debería devolver lo siguiente:

El uso del operador NOT da como resultado pgAdmin

Descargue la Base de Datos utilizada en este Tutorial

Preguntas Frecuentes

In PostgreSQLLa consulta EXISTS suele ser más rápida que la consulta IN en subconsultas extensas, ya que se detiene en la primera coincidencia. Para listas pequeñas y constantes, IN es sencilla y eficiente. Pruebe ambas con EXPLAIN ANALYZE en sus propios datos.

La cláusula NOT IN interpreta NULL como desconocido, por lo que si la lista o subconsulta contiene un valor NULL, la condición completa puede evaluarse como desconocida y devolver cero filas. Filtre los valores NULL o utilice NOT EXISTS en su lugar.

La cláusula IN reemplaza largas cadenas de condiciones OR con una cláusula legible. WHERE id IN (1,2,3) es equivalente a WHERE id=1 OR id=2 OR id=3, pero es más corta, clara y fácil de mantener.

Sí. PostgreSQL trata x IN (a, b, c) como equivalente a x = ANY (ARRAY[a, b, c]). Ambos producen el mismo resultado y, por lo general, el mismo plan de consulta.

Los asistentes de IA generan cláusulas IN a partir de lenguaje natural, sugieren la lista de valores correcta e indican los riesgos de valores NULL en NOT IN. Además, reescriben las consultas lentas y añaden sugerencias EXPLAIN para optimizar el rendimiento.

Sí. Las herramientas de AI Copilot detectan condiciones OR repetidas en una columna y las refactorizan en una única lista IN, lo que mejora la legibilidad y reduce la posibilidad de errores lógicos.

Sí. Coloca una cláusula SELECT dentro de los paréntesis: WHERE id IN (SELECT id FROM orders). La consulta interna, llamada subconsulta, proporciona la lista de valores que se comprueban con IN.

Para tablas grandes, NOT EXISTS o un LEFT JOIN con IS NULL suele ser más eficiente que NOT IN porque PostgreSQL Crea una anti-unión eficiente. Además, asegúrate de que las columnas comparadas estén indexadas.

Resumir este post con: