with as 如何与update一起使用


因为with必须紧跟引用的select语句,而不是delete,update,merge等。

所以有2种方式:

方式1.

update table1 b set b.NAME=(
  with t as
  (
    select * from temp
  )
  select a.NAME from table2 a where a.ID=b.ID
  )
where exists(select 1....)

方式2.

和merge into 一起使用

merge into table1 a
using(
  with t as
  (
    select * from ......
  )
  select a.NAME 
  from table2
  inner join t a on ......
) b on (a.id = b.id and ......)
when matched then 
update set 
a.NAME=b.NAME
--delete where a.nums=0

特别说明:
DELETE字句只能写在MATCHED情况中,不匹配时无法删除会报错。
当DELETE跟在UPDATE子句之后时,DELETE字句是针对UPDATE字句修改后的数据进行过滤的。
比如需要删除所有C字段="0"的数据,UPDATE字句将所有数据的C字段都更新为0,
那么会删除所有数据,而不是原本为0的数据。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM