Sql server 涉及同一表中多列的条件where语句
我有三张桌子 表1:Sql server 涉及同一表中多列的条件where语句,sql-server,tsql,Sql Server,Tsql,我有三张桌子 表1: emp_id, code_1, code_2 code_1, code_2 emp_id, emp_ind 表2: emp_id, code_1, code_2 code_1, code_2 emp_id, emp_ind 表3: emp_id, code_1, code_2 code_1, code_2 emp_id, emp_ind 表2是一个查找表。我需要更新表3检查表2中表1的code\u 1和code\u 2 如果表2中的code\u 2为nul
emp_id, code_1, code_2
code_1, code_2
emp_id, emp_ind
表2:
emp_id, code_1, code_2
code_1, code_2
emp_id, emp_ind
表3:
emp_id, code_1, code_2
code_1, code_2
emp_id, emp_ind
表2是一个查找表。我需要更新表3检查表2中表1的code\u 1
和code\u 2
如果表2中的code\u 2
为null
,则检查表1中的code\u 1
与表2是否匹配,如果是
更新表3中的emp\u ind
为Y
如果表2中的code\u 1
为null
,则检查表1中的code\u 2
与表2中的是否匹配,如果是
更新表3中的emp\u ind
为Y
如果code\u 1
和code\u 2
在表2中都有值,检查表1中的code 1
和code 2
是否与表2的值匹配,如果表3
中的是更新emp\u ind
是否有一种方法可以简单地执行此操作,而不是像下面这样进行检查:
Update table_3 t3
Set t3.emp_ind = 'Y'
Where exists (
Select 1 from table1 t1
Inner Join table2 t2
on t1.code_1 = t2.code_1
Where t2.code_2 is null
And t2.emp_id= t3.emp_id
Union
Select 1 from table1 t1
Inner Join table2 t2
on t1.code_2 = t2.code_2
Where t2.code_1 is null
And t2.emp_id= t3.emp_id
Union
Select 1 from table1 t1
Inner Join table2 t2
on t1.code_1 = t2.code_1
And t1.code_2 = t2.code_2
Where t2.emp_id= t3.emp_id
)
可以使用或运算符组合条件联接,如下所示:
Update table_3 t3
Set t3.emp_ind = 'Y'
Where exists (
Select 1 from table1 t1
Inner Join table2 t2
on
(t1.code_1 = t2.code_1 AND t2.code_2 is null)
OR (t1.code_2 = t2.code_2 AND t2.code_1 is null)
OR (t1.code_1 = t2.code_1 AND t1.code_2 = t2.code_2)
Where t2.emp_id= t3.emp_id
)
表达式和应该允许您在code_1
和code_2
上的Table1
和Table2
之间使用一对left-outer-join
确定emp_ind
值。