当前位置: 首页 > 面试题库 >

在匹配时使用多个语句

淳于兴朝
2023-03-14
问题内容

我正在使用MERGE语句,以便将XML输入插入到SQL Server数据库表中。如何在WHEN MATCHED块中执行多个条件。请参考下面的代码。

USING TableRelationship AS new
  ON (new.TableRelationshipTypeID = old.TableRelationshipTypeID) AND old.ToRoleID = @RoleID

WHEN MATCHED THEN 
   UPDATE 
       SET old.FromRoleID = new.FromRoleID
   -- Condition 2
   -- Condition 3

当前,WHEN MATCHED它仅执行此old.FromRoleID = new.FromRoleID行。如何执行条件中的所有3行(-- Condition 2 and 3WHEN NOT MATCHED

前任 :

这就是我的期望。WHEN MATCHED我只想更新旧字段(old.ThruDate = GETDATE())并将记录插入同一张表。我不能用逗号分隔这些语句。SQL发出

语法错误

MERGE INTO Party.TableRelationship AS old
USING TableRelationship AS new ON (new.TableRelationshipTypeID = old.TableRelationshipTypeID) AND old.ToRoleID = @RoleID

WHEN MATCHED THEN 
   UPDATE 
       SET old.ThruDate = GETDATE(),
   INSERT (FromRoleID, ToRoleID, TableRelationshipTypeID)
   VALUES (new.FromRoleID, new.ToRoleID, new.TableRelationshipTypeID);

谢谢你。


问题答案:

您可以使用 INSERT over DML 它来实现:

INSERT INTO tab_name(FromRoleID, ToRoleID, TableRelationshipTypeID)
SELECT FromRoleID, ToRoleID, TableRelationshipTypeID
FROM (
  MERGE INTO Party.TableRelationship AS old
  USING TableRelationship AS new 
     ON new.TableRelationshipTypeID = old.TableRelationshipTypeID 
    AND old.ToRoleID = @RoleID
  WHEN MATCHED THEN 
    UPDATE SET old.ThruDate = GETDATE()
    OUTPUT $action, FromRoleID, ToRoleID, TableRelationshipTypeID
) sub(action, FromRoleID, ToRoleID, TableRelationshipTypeID)
WHERE action = 'UPDATE';

请记住,此方法有一些局限性,更多信息: MS
Connect



 类似资料:
  • 我正在通过drools-guvnor创建规则。我已经导入了我的POJO模型,并且一切都设置正确(我已经进行了测试),但我似乎无法弄清楚如何让“匹配”运算符正确工作。这是我到目前为止所拥有的(源代码): 有谁能给我一些关于在drools guvnor中使用多个正则表达式检查的提示,或者一些让它工作的方法。他们的论坛似乎真的很陈腐。我在网上找到的大多数答案都没有答案。 任何帮助都将不胜感激。

  • 我的Cosmos DB中有以下json: 现在我尝试对 Technology.id 和评级应用过滤器。这意味着我想选择所有条目,例如评级为1的C#和评级为2的SQL。 大约 因为技术代表是一个不起作用的数组。 我也玩过,但我没有让它工作。 如何编写这样的查询?

  • 问题内容: 我正在使用MySQL包含以下各列的表: 表中的数据如下所示: 要查询它,我可以轻松地做到这一点: 结果将是: 我想知道是否有办法做到这一点: 我想在表达式中使用表列,而无需实际手动指定名称(将其键入)。 奖励(+1)问题 : 能否使用Match / Against像这样完成: 谢谢你的时间!:) 问题答案: 您必须使用Prepared Statement,因为您要执行的操作只能通过动态

  • 尝试使用FTL模板进行转换时出现异常!freemarker.core.nonNumericalException:对于“-”左手操作数:需要一个数字,但它的计算结果是序列+散列(包装器:f.e.dom.nodelistmodel):==>item.target[在模板“marketing/widgets/freemarker/newblogpost-update.ftl”中,第31行,第105列]

  • 如何精确匹配img标记的多个实例?我读了一些关于preg_match的教程,但从未真正理解。 我以此为基础: 我做了一个小的像正则表达式: 在这之后,我就卡住了。我如何继续匹配所有直到两个字符串的末尾? 我在PHP网站上发现了数组部分: 使用我的代码,我如何获得图像URL和alt标签? 谢谢

  • 是否可以让Selenium匹配多个类名? 例如: 谢谢