开发者社区> 问答> 正文

条件where语句涉及同一表中的多个列

表格1:

emp_id, code_1, code_2

表2:

code_1, code_2

表3:

emp_id, emp_ind

Table2是一个查找表。我需要更新表3的检查code_1和code_2的表1存在于表2。

如果code_2在表2中null,然后检查是否code_1在表1和表2的比赛,如果yes更新emp_ind在表3为Y。

如果code_1在表2中null,然后检查是否code_2在表1和表2的比赛,如果yes更新emp_ind在表3为Y。

如果code_1和code_2两者都在估价表2,检查是否都code1和code2在表1的匹配与的表2,如果yes更新emp_ind的表3。

有没有一种方法可以简单地做到这一点,而不是像下面这样检查:

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
)

展开
收起
心有灵_夕 2019-12-22 15:15:19 761 0
1 条回答
写回答
取消 提交回答
  • 技术架构师 阿里云开发者社区技术专家博主 CSDN签约专栏技术博主 掘金签约技术博主 云安全联盟专家 众多开源代码库Commiter

    无非就是关联关联

    2019-12-28 14:20:41
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
RowKey与索引设计:技巧与案例分析 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载