MySQL in-operator必须匹配所有值?

adp*_*adp 13 mysql in-operator

我做了自己的论坛.在进行搜索时,我想找到两个(或更多)特定用户参与的任何线程.我想出了这个:

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

在意识到它实际意味着之前'1' OR '52512'.

有没有办法使它工作,所有id必须匹配?

Joe*_*lli 22

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
Run Code Online (Sandbox Code Playgroud)

  • @ViswanathanIyer但是`IN`子句中只指定了2个值.如果目标是确保匹配`IN`子句中列出的所有值,那么在`HAVING`中测试的值应该与为`IN`指定的值的数量匹配. (4认同)