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

T-SQL输出子句:如何访问旧的标识ID

能正青
2023-03-14
问题内容

我有一条T-SQL语句,该语句基本上执行插入操作,然后将某些插入的值输出到表变量中以供以后处理。

有没有办法将所选记录的旧标识ID存储到我的表变量中。如果使用下面的代码,则会显示“无法绑定多部分标识符” a.ID”。错误。

DECLARE @act_map_matrix table(new_act_id INT, old_ID int)
DECLARE @new_script_id int
SET @new_script_id = 1

INSERT INTO Act
(ScriptID, Number, SubNumber, SortOrder, Title, IsDeleted)
OUTPUT inserted.ID, a.ID INTO @act_map_matrix
    SELECT 
        @new_scriptID, a.Number, a.SubNumber, a.SortOrder, a.Title, a.IsDeleted
    FROM Act a WHERE a.ScriptID = 2

谢谢!


问题答案:

你必须加入回到@act_map_matrixAct获得“旧”值。

在INSERT语句中根本不可用

编辑:希望@new_scriptID和“ scriptid = 2”可以成为联接列



 类似资料:
  • Where 子句用于在从表中获取数据或将其包含在其他表中时生成条件。如果满足条件,则它从表中返回一个特定值。我们使用 WHERE 子句来过滤数据库中的记录并获取主要记录。 在 SELECT 语句中使用了 WHERE 子句,但它也用于 UPDATE、DELETE 帐户等。 语法: 我们使用逻辑运算符生成条件,它们是:、、、、 等。 下面来看一个例子,已更换的理解: 示例 请参阅具有以下记录的 EMP

  • ORDER BY 子句按递增或递减顺序对数据库进行排序。要一次对多个列进行排序,请使用运算符 (,) 运算符分隔列名称。 ORDER BY默认按升序对数据进行排序。 DESC关键字用于按降序对数据进行排序,ASC关键字用于按升序对数据库进行排序。 ORDER BY子句的语法 这里: :表的名称。 :数据库表的列名称。 : 使用 ASC 或 DESC 升序或降序排序 例子: 假设 CUSTOMERS

  • 问题内容: 在此找到了两个类似的问题,但无法弄清楚如何应用于我的方案。 我的函数有一个名为 @IncludeBelow 的参数。值是0或1(BIT)。 我有这个查询: 如果@IncludeBelow为0,我需要查询如下: 如果@IncludeBelow为1,则最后一行需要排除。(即不应用过滤器)。 我猜想它必须是一条语句,但无法弄清楚语法。 这是我尝试过的: 显然,这是不正确的。 正确的语法是什么

  • 问题内容: 我正在尝试在子句中构建case / if语句。 问题在于该列包含文本和数字。我要与之比较的列是一个整数。 有没有一种方法可以检测列是否包含字符或数字,然后将其设置为0,然后将其设置为0? 这是一个伪查询可以帮助您: 问题答案: 您正在寻找IsNumeric,但它并不总是有效(+,-和。是数字),因此您需要使用GBN所描述的解决方案,即在您的varchar中添加.0e0

  • 根据给定的表数据,第三行中的非空字段是“field1”和“field3”。因此WHERE子句将是: 我如何编写一个具有动态WHERE子句的通用SQL来满足这个需求?