update [dbo].[Table]
 set 确认状态='已经发货' 
where (发货日期 is not null or 发货日期!='' or 发货日期!='0') and (货单号 is null or 货单号='0' or 货单号='') and (确认状态!='客服取消' or 确认状态!='商户取消' or 确认状态!='退货取消')请问下我这条语句哪错了,为什么发货日期为1时我把确认状态改为客服取消
但触发器那还是将确认状态改为已经发货.
如果我想实现不管有没发货日期或货单号一旦确认状态为客服取消、商户取消、退货取消就不更新
这条更新语句该怎么改

解决方案 »

  1.   

    update [dbo].[Table]
     set 确认状态='已经发货' 
    where (发货日期 is not null or 发货日期!='' or 发货日期!='0') and (货单号 is null or 货单号='0' or 货单号='') and (确认状态!='客服取消' and 确认状态!='商户取消' and 确认状态!='退货取消')
      

  2.   

    (确认状态!='客服取消' or 确认状态!='商户取消' or 确认状态!='退货取消')
    应该是
    (确认状态!='客服取消' and 确认状态!='商户取消' and 确认状态!='退货取消')
      

  3.   


    update [dbo].[Table]
     set 确认状态='已经发货' 
    where 确认状态!='客服取消' or 确认状态!='商户取消' or 确认状态!='退货取消'直接这么写,试试。
      

  4.   

    (确认状态!='客服取消' and 确认状态!='商户取消' and 确认状态!='退货取消')
    只有它们都为true才行,因此不能用 or而要用and.这样,如果有一个状态不对,就不会更新了.