0

我正在寻找一个 MySQL 查询来查找两个用户在同一线程中发布的位置。这是一个示例,其中 user_id 1 和 user_id 31 都在 thread_id 10 中发布。

例子

到目前为止,我已经创建了这个查询,但它没有检索到任何结果。结果应该是 thread_id 10。

SELECT thread_id
FROM post
WHERE user_id='1'
AND user_id='31'
4

3 回答 3

3

您的查询的问题是没有任何一行可以同时拥有两个用户。

您可以将逻辑移动到having子句(带有 a group by)以执行您想要的操作:

SELECT thread_id
FROM post
group by thread_id
having max(user_id = '1') > 0 and
       max(user_id ='31') > 0;
于 2013-07-23T02:04:31.050 回答
1
SELECT p1.thread_id
FROM post p1 JOIN post p2 ON p1.thread_id=p2.thread_id
WHERE p1.user_id='1' AND p2.user_id='31'
GROUP BY p1.thread_id

或者

SELECT p1.thread_id
FROM post p1
WHERE p1.user_id='1' 
      AND EXISTS(SELECT * FROM post p2 WHERE p2.thread_id=p1.thread_id AND p2.user_id='31')
GROUP BY p1.thread_id
于 2013-07-23T01:57:41.957 回答
1

假设311where 只是一个例子,并且你想找到所有发布两次或更多的线程的 id:

SELECT thread_id
FROM post  
GROUP BY thread_id
HAVING COUNT(thread_id) > 1;
于 2013-07-23T02:08:40.847 回答