sql update语句包含自连接时使用别名出错的处理方法


  本文标签:sql update语句

  使用sql update语句,如果包含自连接时使用别名,运行会报错?不要紧,下面就将教您如何处理这种问题的方法,供您参考  。

  最近写了个sql update语句,条件用到了自连接,于是将代码顺理成章地写成了这样:

  1. update ValidNodes  
  2. set ItemValid=0 
  3. from ValidNodes as v1  
  4. inner join ValidNodes as v2 on v1.Parent=v2.ItemID  
  5. where v2.ItemValid=0 and v1.ItemValid=1 

  结果编译通过,运行时报错,提示第一行update语句后面的表 ValidNodes 不明确  。
莫非sql update语句不支持别名?结果改成一般的连接,运行成功,之后尝试修改代码,变成:

  1. update ValidNodes  
  2. set ItemValid=0 
  3. from ValidNodes  
  4. join ValidNodes as v2 on ValidNodes.Parent=v2.ItemID  
  5. where v2.ItemValid=0 and ValidNodes.ItemValid=1 

  执行通过了  。