2017-05-26 85 views
0

我有一个表,这个数据:SQL比较和选择行

enter image description here

我想获得的thread_id只能由USER_ID 140和我的例子1

所以共享结果将是356和358

有了这个请求

select a.user_id , b.user_id, a.thread_id 
from `wp_bp_messages_recipients` as a, `wp_bp_messages_recipients` as b 
where a.thread_id = b.thread_id 
and a.user_id = 1 
and b.user_id = 140 

我有356,358,359,但我不想要thread_id 359,因为它与user_id 5共享。

非常感谢您的帮助!

回答

0

您可以使用GROUP BY具有鲜明COUNT,如:

SELECT thread_id 
FROM table_name 
WHERE thread_id NOT IN (SELECT thread_id FROM table_name WHERE user_id NOT IN (1, 140)) 
GROUP BY thread_id 
HAVING COUNT(DISTINCT(user_id)) = 2; 
+0

谢谢,但我得到这个请求相同的结果:http://imgur.com/a/CB9wI上的phpmyadmin (测试) – Jean

+0

非常感谢它的工作:) 这是最快的请求可能吗?我有一张巨大的桌子。 – Jean

+0

我已经删除了一个条件,现在试试?是的,只要'thread_id'列被索引,就应该没问题。 –