2011-06-05 5 views
5

Estoy tratando de encontrar una consulta que seleccione cada fila de una tabla asociativa donde la segunda columna indica valores diferentes que deben coincidir con la primera columna.equivalente de consulta MySQL de "Y", mientras que "IN" es "O"?

Ejemplo: Tengo la columna X e Y. Quiero obtener los valores de X donde X se define con cada Y especificado.

x y 
====== 
a 1 
a 2 
b 1 
a 3 
c 2 
c 3 

SELECT DISTINCT x FROM table WHERE y AND (2, 3)

Esta consulta por supuesto no es válido. Esperaría obtener a y c de alguna manera.

Como también estoy tratando de aprender mejor las consultas de MySQL, le agradecería si pudiera dar una explicación de la lógica detrás de su respuesta, si puede proporcionar una. ¡Gracias! :)

+0

¿Por qué no puedes usar 'WHERE ... IN()'? – Midas

+0

Su conjunto de entrada es ambiguo. Supongamos que hay una fila adicional (x = 'd', y = 3) - ¿la devuelve su consulta? –

+1

lo que quiere decir es que quiere esos valores de 'x' donde _both_ 2 y 3 aparecen en' y'. – Alnitak

Respuesta

11

Espero que esto es lo que estás buscando. Si lo confirma, le explicaré la consulta.

select x 
from table 
where y in (2,3) 
group by x 
having count(distinct(y)) = 2 
+0

Quizás esto es lo que necesito, pero por alguna razón no obtengo ningún resultado de mi tabla de prueba. – Lazlo

+0

He utilizado su ejemplo para escribirle la consulta :( –

+0

En realidad, me retracto de lo que dije, tengo resultados para la misma tabla exacta. Simplemente no para la tabla real que uso. Permítanme intentarlo más. – Lazlo

Cuestiones relacionadas