我有两个表员工和部门,我想使用单个查询用部门 ID 替换员工表中的部门名称?
问问题
2565 次
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 回答