微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果存在,将字段从一个表更新到另一个表,否则为空

如何解决如果存在,将字段从一个表更新到另一个表,否则为空

我有两个表(列)Employee(ID,EmployeeName,FK_DepartmentID)Department(ID,DepartmentName),其中我的 Employee 表保存员工的数据并设置部门的外键。 Relational DB Department Table Employee Table

现在在我的 VB 代码中,我有一个员工姓名文本框和一个部门组合框,用户可以从中更新员工姓名和部门。所以我想更新员工表的名称以及部门的外键,所以我使用了:

UPDATE Employee e,(SELECT d.ID FROM Department d Where d.DepartmentName = @dept) As d 
SET e.FK_Department = d.ID,e.EmployeeName = @name
WHERE ((e.ID)='3') ;

这似乎工作正常。但我希望我的部门组合框是可选的。如果不能选择,则 FK_Department 表中的 Employee 将为 NULL。但是,如果我在没有@dept 的任何值的情况下运行查询,则该查询会创建 0 个有意义的新行,因为我的 (SELECT d.ID FROM Department d Where d.DepartmentName = @dept) 不返回任何内容。我该怎么做才能更新查询以获得结果?

我也试过加入,但不确定在哪里申请 Where d.DpartmentName = @dept,试过 Set e.FK_Department = IIF((Select ID From Department Where DepartmentName = @dept) Is Null,Null,Department.ID),但似乎不起作用。

旁注:不确定我的问题是否是 Upsert。因为最后我还是更新了员工表,还是我的想法错了?

如果可能,您的帮助将挽救生命。提前致谢。

解决方法

使用子查询如下:

UPDATE Employee e
   Set e.EmployeeName = @name,e.FK_Department = coalesce((select d.ID FROM Department d Where d.DepartmentName = @dept),e.FK_Department)
WHERE e.ID='3' ;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。