具有where IN子句且不存在IN子句的SQL更新语句

时间:2019-03-07 10:04:12

标签: sql sql-server tsql

我需要基于where IN子句而不是不存在子句对表进行更新,但是出现语法错误。

 update apodetail
    set arr_amount =0,
        arr_val = 0,
        status = 'C'
 where order_id IN (60035706,
60035736,
60035780,
60035846,
60035866,
60035867,
60035886,
60035892,
60035897,
60035898,
60035908,
60035967,
60036013)
   and not exists (select *
                     from acrtrans
                    where order_id IN (60035706,
60035736,
60035780,
60035846,
60035866,
60035867,
60035886,
60035892,
60035897,
60035898,
60035908,
60035967,
60036013)

在使用where IN()运算符时,我打算有更多条目,但适用相同的原理。

错误

  

信息102,第15级,状态1,第33行,')'附近的语法不正确。

1 个答案:

答案 0 :(得分:1)

在查询结束时尝试使用)。插入语句未正确结束。

这是正确的!

update table1
set amount =0,
status = 'Closed'
where order_id IN (1001,1002,1003,1004)
and   not exists (select * from table2
                     where order_id IN (1001,1002,1003,1004));