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: