我有一个包含2个表的数据库-free
和Employees
。
Group
具有以下列:
Employees
Id (primary key), Name, GroupId
具有以下列:
Group
这是Id (primary key), EmployeeId (foreign key), GroupId
表:
Employees
这是+-----+------+---------+
| Id | Name | GroupId |
+-----+------+---------+
| 123 | abc | 000 |
| 456 | def | 000 |
+-----+------+---------+
表:
Group
我需要从+-----+------------+---------+
| Id | EmployeeId | GroupId |
+-----+------------+---------+
| pqr | 456 | g01 |
| uvw | 123 | g02 |
| xyz | 123 | g03 |
+-----+------------+---------+
表中获取GroupId
中的任何一个EmployeeId
(例如前一个),并更新Group
表中的GroupId
。 / p>
最终结果应如下:
Employees
如果您对此有任何解决方案,请告诉我。谢谢!
我正在使用SQL Server。
答案 0 :(得分:1)
只需使用cross apply
:
update e
set groupid = g.groupid
from employees e cross apply
(select top (1) g.*
from groups g
where e.employeeid = g.employeeid
) g;
用任意 employees
更新groupid
似乎很奇怪。如果您特别想要一个(例如最旧的),则可以向子查询添加order by
子句。
答案 1 :(得分:1)
UPDATE e
SET GroupId = g.GroupId
FROM Employees e INNER JOIN
(SELECT EmployeeId, GroupId FROM [Group] ORDER BY Id DESC) g
ON e.Id = g.EmployeeId