Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 返回受更新查询影响的所有主键_Sql_Sql Server_Tsql_Ssms - Fatal编程技术网

Sql 返回受更新查询影响的所有主键

Sql 返回受更新查询影响的所有主键,sql,sql-server,tsql,ssms,Sql,Sql Server,Tsql,Ssms,是否可以检索受更新查询影响的所有主键?例: 表: +-------------+---------+--------+ |idx (PK, int)|FirstName|LastName| +-------------+---------+--------+ |1 |Jane |Smith | +-------------+---------+--------+ |2 |John |Test | +-------------+

是否可以检索受更新查询影响的所有主键?例:

表:

+-------------+---------+--------+
|idx (PK, int)|FirstName|LastName|
+-------------+---------+--------+
|1            |Jane     |Smith   |
+-------------+---------+--------+
|2            |John     |Test    |
+-------------+---------+--------+
|3            |Adam     |Smith   |
+-------------+---------+--------+
查询:

UPDATE clients SET [LastName] = 'Smith' WHERE [FirstName] = 'John'
UPDATE clients SET [FirstName] = 'test' WHERE [LastName] = 'Smith'
我想要的回报是:

二,

但是我也希望这个方法可以用于多行。。。例:

查询:

UPDATE clients SET [LastName] = 'Smith' WHERE [FirstName] = 'John'
UPDATE clients SET [FirstName] = 'test' WHERE [LastName] = 'Smith'
我想要的回报是:

1,3


创建符合以下条件的事务:

  • 将记录选择到临时表中
  • 更新主表
  • 从临时表中选择
  • 使用

    该条款应满足您的要求

    UPDATE clients SET [LastName] = 'Smith' OUTPUT inserted.idx WHERE [FirstName] = 'John' ;
    

    将OUTPUT子句与表变量结合使用以更新所有ID:

    declare @insertedIds table (id int)
    
    update
      supportContacts
    set
      type = 'Email, updated'
    output inserted.id into @insertedIds
    where
      type = 'Email'
    
    select id from @insertedIds
    

    似乎使用输出是一种方式。 看看我做的小提琴


    SQL Server在
    UPDATE
    语句中实现子句。如PM 77-1所述:您可以使用
    OUTPUT
    子句从行中获取任何数据(注意复数形式),例如
    Id
    值<代码>输出可与
    插入
    更新
    删除
    合并
    一起使用,并在
    更新
    时提供对前后值的访问。一个很值得放在你口袋里的工具。