代码之家  ›  专栏  ›  技术社区  ›  Abhishek

如何在更新表时获取更新(非计数)行

sql
  •  3
  • Abhishek  · 技术社区  · 17 年前

    我想获取更新命令所更新的行,但结果只是更新的行数,但我希望整个行与select命令中的一样,所以请告诉我是否有人知道这一点。 我试过这个。

    update newTable set readKey='1' where id in (select id from newTable where id='1111')
    

    此命令的结果将只显示没有未完成行的行,但我希望显示整行。

    1 回复  |  直到 17 年前
        1
  •  8
  •   van    17 年前

    首先,您可以编写更简单的代码:

    update newTable set readKey='1' where id in ('1111')
    

    在SQL Server中,这将仅返回更新的行数,但仅当 SET NOCOUNT 未设置。

    基本上,您可以执行第二个查询来显示第一个查询之后的结果:

    update newTable set readKey='1' where id in ('1111');
    select * from newTable where id in ('1111');
    

    或者,如果这是SQL Server 2005/2008,则可以使用 OUTPUT 条款:

    update  newTable 
    set     readKey='1'
    output  inserted.id,
            inserted.readKey as readKey,
            deleted.readKey as prevReadKey
    where id in ('1111');