Оператор MySQL должен соответствовать всем значениям? - PullRequest
12 голосов
/ 21 сентября 2011

Я создал свой собственный форум. При поиске я хочу найти любые темы, в которых участвовали два (или более) конкретных пользователя. Я придумал это:

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

Прежде чем понять, что это на самом деле означает '1' OR '52512'.

Есть ли способ заставить его работать так, чтобы все идентификаторы совпадали?

1 Ответ

21 голосов
/ 21 сентября 2011
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
...