-3

我有两个表员工和部门,我想使用单个查询用部门 ID 替换员工表中的部门名称?

4

3 回答 3

0

实际上,他/她如何在这里陈述问题存在一些问题。

但根据我对这种情况的看法和假设,它应该是这样的(如果我错了,请纠正我):

表:员工

|-----------------------------------|
| Id | EmployeeName | DepartmentId  |
|-----------------------------------|
| 1  | Employee A    | 1            |
| 2  | Employee B    | 2            |
| 3  | Employee C    | 1            |
|-----------------------------------|

表:部门

|--------------------|
| Id | DeparmentName |
|--------------------|
| 1  | Department A  |
| 2  | Department B  |
| 3  | Department C  |
|--------------------|

期望的输出

|-------------------------------------|
| Id | EmployeeName  | DepartmentName |
|-------------------------------------|
| 1  | Employee A    | Department A   |
| 2  | Employee B    | Department B   |
| 3  | Employee C    | Department A   |
|-------------------------------------|

问题:您想要查看或记录更新的目的是什么?

场景1:因为如果只是出于查看的目的,不需要像上面那样更新,可以使用连接查询产生。

SELECT e.Id, e.EmployeeName, d.DepartmentName
FROM Employee e
INNER JOIN Deparment d
ON e.DepartmentId = d.Id

场景 2:但如果是更新记录,则会出现问题,因为 DepartmentId 是数字数据类型,而部门名称是字符串数据类型。

UPDATE Employee e
INNER JOIN Department d
ON e.DepartmentId = d.Id
SET e.DepartmentId = d.DepartmentName

但是上面的代码会导致我上面提到的错误,因此您可以将 DepartmentId 更改为字符串数据类型,以便上述查询将在没有错误的情况下执行。

但在这种情况下,我认为您只需要第一种情况。

于 2013-09-20T10:45:19.497 回答
0

像这样的东西应该工作

update employee e
inner join department d on e.dept_name = d.name
set e.dept_id = d.id
于 2013-09-20T09:36:28.670 回答
0

这是你想要的?

UPDATE EMPLOYEE E AS 
    INNER JOIN DEPARTMENT D 
        ON E.DEPT_NAME = D.DEPT_NAME 
SET E.DEPT_NAME = D.DEPT_ID;
于 2013-09-20T09:48:24.533 回答