mysql join返回重复记录

y53ybaqx  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(267)

我有两张table,
Manager-Employees 有员工和经理记录。managerid和employeeid是关键记录。一个经理可以管理n个或多个员工。
Employee 有员工记录。经理和雇员都在这张表里。employeeid列是唯一的id。
下面是我试图从这些表中获取显示managerid、employeeid、managername和employeename的记录。此查询返回重复的行。我怎样才能解决这个问题?数据库是mysql。

SELECT 
    `employee`.`employeeId` AS `employeeId`,
    `manager_employees`.`managerId` AS `managerId`,
    `manager`.`fullName` AS `Manager Name`,
    `employee`.`fullName` AS `Employee Name`,
    `employee`.`employeeRoleTitle` AS `employeeRoleTitle`,
    `manager`.`employeeRoleTitle` AS `manageremployeeRoleTitle`
FROM
    `Manager-Employees` `manager_employees`
LEFT JOIN
    `Employee` `manager` 
    ON (`manager`.`employeeId` = `manager_employees`.`managerId`)
LEFT JOIN
    `Employee` `employee` 
    ON ( `employee`.`employeeId` =  `manager_employees`.`employeeId`);
insrf1ej

insrf1ej1#

我建议在你的书里找一个复制品 manager-employees table。或者在你的办公室里复制雇员ID Employee table。如果这两个值中的任何一个是真的,那么结果中就会出现重复的结果,唯一的解决方案就是使用 select distinct (或清理源表)

SELECT `employeeId`,count(*) as cnt 
FROM `Employee`
GROUP BY `employeeId`
HAVING COUNT(*) > 1

SELECT `managerId`,`employeeId`,count(*) as cnt 
FROM `Manager-Employees`
GROUP BY `managerId`,`employeeId`
HAVING COUNT(*) > 1

相关问题