使用此命令,我们可以指定如下内容:
WHEN MATCHED AND stm.StudentMarks > 250 THEN DELETE
但是,如果记录不合格,我们如何陷入困境?例如,说 stm.StudentMarks = 100?如果我尝试“ELSE”,我会收到语法错误。
我知道这个命令通常不会以这种方式使用。但如果它能够做到这一点,我就不必使用事务、锁和多个 SQL 语句了。
使用此命令,我们可以指定如下内容:
WHEN MATCHED AND stm.StudentMarks > 250 THEN DELETE
但是,如果记录不合格,我们如何陷入困境?例如,说 stm.StudentMarks = 100?如果我尝试“ELSE”,我会收到语法错误。
我知道这个命令通常不会以这种方式使用。但如果它能够做到这一点,我就不必使用事务、锁和多个 SQL 语句了。
尝试:
WHEN NOT MATCHED ....... THEN ......
要在源中查找那些在目标中没有等效项的行(基于ON ....
您指定的条件),否则,您需要指定更多/其他表达式,例如
WHEN MATCHED AND stm.StudentMarks <= 250 THEN .....
基于进一步的学习,我得出的结论是,这样做的方法是使用视图/TVF 来获取正确的数据集。一个可以获得符合“IF ... THEN ...”的记录,另一个可以获得符合 ELSE 的记录。它只会运行两个 MERGE 语句,这没什么大不了的。
使用一秒钟
WHEN MATCHED THEN
没有任何额外的条件,它只会触发一个 when 子句,因为第一个获得与条件匹配的所有内容,第二个只会获得除条件之外的所有匹配项。