2010-05-10 26 views
6

Tengo problemas para escribir una consulta y ni siquiera sé si es posible. Tome esta tabla por ejemplo:MySQL Query: cómo seleccionar las filas que no tienen un cierto valor?

id group active 

1 A  NO 
2 A  YES 
3 A  NO 

4 B  YES 
5 B  NO 

6 C  NO 
7 C  NO 

La tabla de arriba es solo un ejemplo. En la tabla real hay muchas más columnas que esos árboles, así que tenlo en cuenta. Lo que necesito es una forma de seleccionar solo los nombres de grupos que no tienen ninguna fila activa. En este caso, los grupos "A" y "B" tienen al menos una fila con "activo" = "SÍ", pero si observa C no hay filas activas. Lo único que necesitaría como resultado es un valor de columna de grupo (en este caso, "C") no toda la fila.

¿Esto es posible?

Respuesta

7
SELECT DISTINCT group FROM table WHERE group NOT IN 
    (SELECT DISTINCT group FROM table WHERE active = 'YES') 
+0

Esto funcionó bien. Gracias. – Srka

1

primero desea obtener todos los grupos que desea excluir, y luego utilizar la cláusula NOT IN para devolver todos los otros grupos no en esa lista.

SELECT DISTINCT t.group 
FROM table t 
WHERE t.group NOT IN 
    (SELECT DISTINCT t.group 
    FROM table t 
    WHERE t.active='YES'); 
+0

Esto es casi como el publicado por danben, así que supongo que también funcionará. – Srka

Cuestiones relacionadas