多对多关联查询问题:获取指定Account关联的Manager失败
搞定Account关联Manager的查询问题
嘿,我瞅着你在查询指定Account对应的所有Manager时没得到预期结果,问题出在SQL的连接条件写错啦!咱们先理清楚三张表的关联逻辑:
ManagerAccount是用来关联Manager和Account的中间表,它的managerId字段对应Manager表的managerId,accountId字段对应Account表的accountId- 你当前的SQL里,错误地把
m.managerId和ma.id(中间表的主键)关联,还把ma.id和a.accountId关联,这完全不符合表的外键关系,肯定查不到正确数据呀!
修正后的SQL语句
SELECT m.name FROM Manager m INNER JOIN ManagerAccount ma ON m.managerId = ma.managerId INNER JOIN Account a ON ma.accountId = a.accountId WHERE a.accountId = 1;
小扩展:获取更多关联信息
如果你需要同时拿到Manager的ID或者Account的名称,可以调整SELECT的字段列表:
SELECT m.managerId, m.name AS manager_name, a.name AS account_name FROM Manager m INNER JOIN ManagerAccount ma ON m.managerId = ma.managerId INNER JOIN Account a ON ma.accountId = a.accountId WHERE a.accountId = 1;
要是你担心某些Account可能没有关联任何Manager(想保留这类Account的记录),可以把INNER JOIN换成LEFT JOIN,不过根据你的需求,用INNER JOIN就足够获取有关联的Manager啦。
内容的提问来源于stack exchange,提问作者JohnBigs
相关产品推荐
相关产品推荐

