我在SQL服务器中执行查询,使用2个表执行以下操作:表1称为" accadj"有3个字段的旧值和新值列表,因此accadj有6列。表2称为" accnt"有实际记录。当accnt中的记录与accadj中的旧值匹配时,accnt中的值将更改为与accadj中的新值匹配。 accadj看起来像这样:
和accnt看起来像这样:
这些图片都只是整张桌子的片段。我描述的查询的代码的代码如下:
Update accnt
set accnt.accno = accadj.accnonew,
accnt.jno =accadj.jnonew,
accnt.saccno =accadj.saccnonew
from accnt accnt join accadj accadj with(nolock)
on accnt.accno = accadj.accnoold
and accnt.jno = accadj.jnoold
and accnt.saccno =accadj.saccnoold
我需要在查询运行之前和之后显示记录的样子,然后打印出该列表。我知道如何在使用我刚刚描述的代码前面的代码运行查询之前显示记录:
select accnt.*
from accnt, accadj
where accnt.accno = accadj.accnoold
and accnt.jno = accadj.jnoold
and accnt.saccno =accadj.saccnoold
但是在运行查询之后,旧记录不再存在,我无法弄清楚如何使用旧版本自己显示新更改的记录。关于如何解决这个问题的任何想法?
答案 0 :(得分:3)
在更新语句中使用OUTPUT子句 https://msdn.microsoft.com/en-us/library/ms177564.aspx
您插入的表格是您的新值,已删除的是旧值。 您可以将这些插入到临时表/表变量中,然后在代码中进一步使用。或者,如果您的SQL版本支持查看更改数据捕获。