es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo seleccionar múltiples condiciones en Redshift

Tengo la siguiente tabla:


tipo valor
A true
A false
B true
B false
C true
C true

y me gustaría obtener el siguiente resultado:

se debe seleccionar el tipo A o B primero, luego el tipo B y el valor true deben ser eliminados.


tipo valor
A true
A false
B false

Intenté la siguiente consulta:


select *
from tabla
where tipo in ('A', 'B')
and (tipo,valor) not in ('B','true')

pero obtuve el siguiente error:

los argumentos de la fila IN deben ser todas expresiones de fila;

¿Cuál es el problema de esto?
¿Hay alguna forma de lograr esto?

Si alguien tiene alguna opinión, por favor avíseme.
Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no puedo determinar el problema exacto con la consulta sin conocer el esquema de la base de datos y la versión de SQL que se está utilizando. Sin embargo, el mensaje de error sugiere que la cláusula not in no está siendo utilizada correctamente.

    Una forma de lograr el resultado deseado es utilizar el operador union para combinar los resultados de dos consultas separadas.

    select tipo, valor
    from tabla
    where tipo in ('A', 'B')
    and valor != 'true'
    union
    select tipo, valor
    from tabla
    where tipo = 'A'
    

    La primera consulta selecciona todos los registros donde el tipo es A o B y el valor es falso. La segunda consulta selecciona todos los registros donde el tipo es A y omite la columna del valor.

    El operador union elimina cualquier fila duplicada, por lo que el resultado final será:

    tipo  valor
    ----- -----
    A     true
    A     false
    B     false
    

    Nota: Esta solución asume que los valores en la columna ‘valor’ son siempre ‘true’ o ‘false’. Si hay otros valores posibles, esta solución puede necesitar modificarse en consecuencia.

Comments are closed.