如何解决如果存在,将字段从一个表更新到另一个表,否则为空
我有两个表(列)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 举报,一经查实,本站将立刻删除。