【问题标题】:Update table joined to another table with different conditions更新表连接到另一个具有不同条件的表
【发布时间】:2013-06-10 12:25:07
【问题描述】:

我想更新一个内连接到另一个表的表,但是应该更新的行应该有特定的条件或者不存在于第二个表中:

Update T1
Set STATUS = 'R'
From table1 T1
 inner join table2 T2
   on T1.ID = T2.ID and T2.STATUS = 'F' 

Update T1
Set STATUS = 'R'
From table1 T1
Where T1.ID not exists in(Select T2.ID from table2 T2) 

一个Query怎么写?

【问题讨论】:

    标签: sql-server-2008


    【解决方案1】:

    您可以在 where 子句中执行 OR。像下面这样:

    更新 T1 设置 STATUS = 'R' 从 table1 T1
        T1.ID = T2.ID 和 T2.STATUS = 'F' 或 T1.ID 上的内部连接表 2 T2 不存在(从表 2 T2 中选择 T2.ID)
    

    【讨论】:

    • 对不起@Stephen,但“OR”不能在一边使用一个布尔条件并在另一边加入一个布尔条件
    • 试试这个,我忘了包括括号。更新 T1 Set STATUS = 'R' From table1 T1 inner join table2 T2 on T1.ID = T2.ID where (T2.STATUS = 'F') or (T1.ID not exist in(Select T2.ID from table2 T2) )
    • 存在它有语法错误所以我将其替换为: Update T1 Set STATUS = 'R' From table1 T1 inner join table2 T2 on T1.ID = T2.ID where (T2.STATUS = ' F') 或 (T1.ID not in(Select T2.ID from table2 T2)) 但它返回了错误的结果,因为它只检查了“或条件”的第一部分
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    • 1970-01-01
    相关资源
    最近更新 更多