如何从名为Employee的表中获取名为ManagerId引用本身为empId的外键的记录

时间:2017-02-11 11:19:29

标签: mysql sql sql-server

我遇到了这个问题,我试图从Employee表中获取一条记录,其中有五列名为EmpId,Name,Age,Post和ManagerId。 ManagerId是Empid的Employee表的外键和引用表。它意味着经理也是公司的雇员。

问题是我想获得一条记录,其中包含与员工记录关联的empId,Name和Manager Name。那么mysql的查询是什么呢。这是表信息: -

DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee` (
  `empId` int(10) unsigned NOT NULL auto_increment,
  `Name` varchar(45) default NULL,
  `Age` varchar(45) default NULL,
  `Post` varchar(45) default NULL,
  `managerId` int(10) unsigned default NULL,
  PRIMARY KEY  (`empId`),
  KEY `FK_employee_1` (`managerId`),
  CONSTRAINT `FK_employee_1` FOREIGN KEY (`managerId`) REFERENCES `employee` (`empId`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

1 个答案:

答案 0 :(得分:1)

您可以使用Left Join with Self。

来完成此操作
SELECT e1.empId, e1.Name,  
       e2.Name AS manager_name 
FROM   employee e1 
       LEFT JOIN employee e2 
       ON e1.managerId = e2.empId