子查询和加入

时间:2014-04-26 23:26:56

标签: mysql sql subquery

我有3张与我的问题相关的表格;

用户=> u_id |如first_name

对话=> c_id | bla bla

ConversaionMember => c_id | u_id | bla bla

我要问的是,我希望获得有关用户3(我的意思是用户ID)与该对话中所有其他用户的对话的所有信息

作为一个例子

Conversation 

1

2

ConversationMember (c_id,u_id)

1 1

1 2

1 3

2 1

2 3

我想要一个查询,当我要求用户2时,我会得到结果,其中包含用户2中包含的对话的所有信息

ConversationMember (c_id,u_id)

    1 1

    1 2

    1 3

2 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望ConversationMember中所有成员都为2(或其他)的转化行。如果是这样的话:

select cm.*
from ConversationMember cm
where exists (select 1
              from ConversationMember cm2
              where cm2.u_id = 2 and
                    cm2.c_id = c.c_id
             );

答案 1 :(得分:0)

以下查询将返回会话成员表中用户编号为3的会话的所有记录

SELECT * FROM `ConversationMember` WHERE `c_id` IN (SELECT `c_id` FROM `ConversationMember` WHERE `u_id`=3)

无需创建联接