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
分解了成员和联系人之间的关系-但是您让他们直接加入到该查询中了吗?