【问题标题】:MySQL in-operator must match all values?MySQL in-operator 必须匹配所有值?
【发布时间】:2011-11-22 05:35:37
【问题描述】:

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

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

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

有没有办法让它工作,以便所有的 id 都必须匹配?

【问题讨论】:

  • 请给出你的实际表结构,包括PK。
  • 请发布您的真实代码,或者至少发布什么是 table1 和 table2。我的第一个方法让我加入了两次线程表。请阅读这篇文章并回复stackoverflow.com/questions/7492699/…

标签: mysql in-operator


【解决方案1】:
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

【讨论】:

  • 两个(或更多)特定用户,所以应该是>=2
  • @ViswanathanIyer 但IN 子句中只指定了 2 个值。如果目标是确保匹配IN 子句中列出的所有值,那么在HAVING 中测试的值应该与为IN 指定的值的数量相匹配。
  • @Joe - ViswanathanIyer 不是 OP。
  • @JoeStefanelli MartinSmith :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-10
  • 2012-07-23
  • 1970-01-01
  • 2015-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多