2011-09-21 10 views
11

He hecho mi propio foro. Al hacer una búsqueda, quiero encontrar hilos donde hayan participado dos (o más) usuarios específicos. Se me ocurrió esto:MySQL in-operator debe coincidir con todos los valores?

SELECT * FROM table1 INNER JOIN table2 
ON table1.threadid=table2.threadid 
WHERE table2.threadcontributor IN ('1','52512') 

Antes de darse cuenta de que en realidad significa '1' OR '52512'.

¿Hay alguna manera de hacerlo funcionar para que todas las identificaciones coincidan?

+0

Proporcione las estructuras reales de su tabla, incluido PK. –

+0

publique su código real o al menos qué son table1 y table2. mi primer enfoque me hace unir dos veces la tabla de hilos. por favor, lea esta publicación y anwser http://stackoverflow.com/questions/7492699/how-can-i-structure-a-query-to-give-me-only-the-rows-that-match-all-values- in-ac/7493309 # 7493309 –

Respuesta

20
SELECT * 
    FROM table1 
     INNER JOIN table2 
      ON table1.threadid=table2.threadid 
    WHERE table2.threadcontributor IN ('1','52512') 
    GROUP BY table1.PrimaryKey 
    HAVING COUNT(DISTINCT table2.threadcontributor) = 2 
+0

dos (o más) usuarios específicos por lo que debería ser '> = 2' –

+3

@ViswanathanIyer Pero solo hay 2 valores especificados en la cláusula' IN'. Si el objetivo es asegurarse de que coincida con todos los valores enumerados en la cláusula 'IN', entonces el valor probado en' HAVING' debe coincidir con el número de valores especificados para 'IN'. –

+0

@Joe - ViswanathanIyer no es el OP. –

Cuestiones relacionadas