0

使用此命令,我们可以指定如下内容:

WHEN MATCHED AND stm.StudentMarks > 250 THEN DELETE

但是,如果记录不合格,我们如何陷入困境?例如,说 stm.StudentMarks = 100?如果我尝试“ELSE”,我会收到语法错误。

我知道这个命令通常不会以这种方式使用。但如果它能够做到这一点,我就不必使用事务、锁和多个 SQL 语句了。

4

3 回答 3

1

尝试:

WHEN NOT MATCHED ....... THEN ......

要在源中查找那些在目标中没有等效项的行(基于ON ....您指定的条件),否则,您需要指定更多/其他表达式,例如

WHEN MATCHED AND stm.StudentMarks <= 250 THEN .....
于 2010-12-13T06:08:22.583 回答
0

基于进一步的学习,我得出的结论是,这样做的方法是使用视图/TVF 来获取正确的数据集。一个可以获得符合“IF ... THEN ...”的记录,另一个可以获得符合 ELSE 的记录。它只会运行两个 MERGE 语句,这没什么大不了的。

于 2010-12-22T21:35:12.957 回答
0

使用一秒钟

WHEN MATCHED THEN 

没有任何额外的条件,它只会触发一个 when 子句,因为第一个获得与条件匹配的所有内容,第二个只会获得除条件之外的所有匹配项。

于 2011-05-05T11:54:59.710 回答