存在的多个

问题描述 投票:0回答:1

我需要根据以下条件将table_work中的value_check列更新为N

将value_check更新为N

  1. 如果table_work中的employee_id没有employee_manager_id记录(在employees_contact表中)(空白/空或完全没有记录)当getdate在contact_eff_dt和contact_end_dt之间(加入使用employee_id)
  2. 如果table_work中的employee_id在以下位置有记录employee_contact表,但employee_manager_id work_location_state不是NJ或NY或ME ..mgr_work_location表具有employee_manager_id和work_location_state列。

我能够用2条更新语句来做到这一点,有一种简单的方法可以只使用一条更新语句吗?也许在存在条件的地方使用多个?

这是我现在使用的2个更新:

UPDATE 1

Update work 
set work.value_check = 'N' 
From table_work work 
Where wotk.value_check = 'Y' 
And not exists (select employee_manager_id 
                from employees_contact contact 
                Where contact.employee_id = work.employee_id 
                And getdate() between contact.eff_dt and contact.end_dt)

UPDATE 2

Update work 
set work.value_check = 'N' 
From table_work work 
Join employees_contact contact On contact.employee_id= work.employee_id 
Join mgr_work_location mgr On mgr.mgr_id = contact.employee_manager_id 
Where work.value_check = 'Y' 
And getdate() between contact.eff_dt 
and contact.end_dt And mgr.work_location_state not in ('NJ','NY,'ME')
sql sql-server exists not-exists notin
1个回答
0
投票

[第一个查询的NOT EXISTS标准可能可以在第二个查询中通过LEFT JOIN进行仿真,并检查contact.employee_id IS NULL(不匹配)

© www.soinside.com 2019 - 2024. All rights reserved.