如何连接具有额外条件的表

时间:2013-09-13 12:03:05

标签: mysql join

在连接表中要导入哪些行的附加条件时,无法确定如何进行连接。

成员

id|name

联系人

id|name

membercontact

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即m.id = 2,这不是我想要的。

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

1 个答案:

答案 0 :(得分:1)

您的查询正在使用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;

它将返回所有成员,因为这就是left join的工作原理。如果您要过滤内容,请将left join更改为inner join

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;