Mysql 如何使用附加条件连接表

Mysql 如何使用附加条件连接表,mysql,join,Mysql,Join,当存在要导入联接表中的行的附加条件时,我很难确定如何进行联接 成员 id|name 接触 id|name 会员联系 id|memberid|contactid|myid 1|1|33|2 2|1|34|3 SELECT m.*,c.*,cm.* FROM `members` m LEFT JOIN `contacts`c ON c.memberid = m.id LEFT JOIN `membercontact` mc ON m.id = mc.memberid AND mc.

当存在要导入联接表中的行的附加条件时,我很难确定如何进行联接

成员

id|name
接触

id|name
会员联系

id|memberid|contactid|myid

1|1|33|2
2|1|34|3

SELECT m.*,c.*,cm.* 
FROM `members` m
LEFT JOIN `contacts`c
  ON c.memberid = m.id
LEFT JOIN `membercontact` mc
  ON m.id = mc.memberid AND mc.myid ='3'
WHERE m.id = '2'
GROUP BY m.id
不起作用。另一方面,如果我删除mc.myid=3条件,它将返回第一个案例,其中m.id=mc.memberid ie m.id=2,这不是我想要的


有人能建议正确的方法吗?谢谢。

您的查询使用的是
左连接:

SELECT m.*,c.*,cm.* 
FROM `members` m LEFT JOIN
     `contacts`c
      ON c.memberid = m.id LEFT JOIN
     `membercontact` mc
      ON m.id = mc.memberid AND mc.myid ='3'
WHERE m.id = '2'
GROUP BY m.id;
SELECT m.*,c.*,cm.* 
FROM `members` m INNER JOIN
     `contacts`c
      ON c.memberid = m.id INNER JOIN
     `membercontact` mc
      ON m.id = mc.memberid AND mc.myid ='3'
WHERE m.id = '2'
GROUP BY m.id;
它将返回所有成员,因为
left join
就是这样工作的。如果要筛选内容,请将
左连接
更改为
内部连接

SELECT m.*,c.*,cm.* 
FROM `members` m LEFT JOIN
     `contacts`c
      ON c.memberid = m.id LEFT JOIN
     `membercontact` mc
      ON m.id = mc.memberid AND mc.myid ='3'
WHERE m.id = '2'
GROUP BY m.id;
SELECT m.*,c.*,cm.* 
FROM `members` m INNER JOIN
     `contacts`c
      ON c.memberid = m.id INNER JOIN
     `membercontact` mc
      ON m.id = mc.memberid AND mc.myid ='3'
WHERE m.id = '2'
GROUP BY m.id;

它看起来像是
membercontact
分解了成员和联系人之间的关系-但是您让他们直接加入到该查询中了吗?