我有两个表员工和部门,我想使用单个查询从部门ID部门ID替换员工表中的部门名称?
答案 0 :(得分:0)
这样的事情应该有效
update employee e
inner join department d on e.dept_name = d.name
set e.dept_id = d.id
答案 1 :(得分:0)
这是你在找什么?
UPDATE EMPLOYEE E AS
INNER JOIN DEPARTMENT D
ON E.DEPT_NAME = D.DEPT_NAME
SET E.DEPT_NAME = D.DEPT_ID;
答案 2 :(得分: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是数字数据类型,而Department name是字符串数据类型。
UPDATE Employee e
INNER JOIN Department d
ON e.DepartmentId = d.Id
SET e.DepartmentId = d.DepartmentName
但是上面的代码会导致我上面提到的错误,所以你可以用一个字符串数据类型更改DepartmentId,这样就可以执行上面的查询而不会出错。
但在这种情况下,我认为你只需要第一种情况。