【问题标题】:SQL Merge and output in the same tableSQL 合并输出同一张表
【发布时间】:2015-02-10 09:38:32
【问题描述】:

我正在合并 2 个表,我希望如果单元格被更新,我的代码中的字段将被标记为“已更新”:

 MERGE [ITWORKS].[dbo].[Testine2] te
    USING [ITWORKS].[dbo].[Testinus] bo
    ON te.itemid = bo.itemid
    AND te.itemname <> bo.itemname
    WHEN MATCHED THEN
      UPDATE
      SET te.itemname = bo.itemname
     OUTPUT
        $action
       into  [ITWORKS].[dbo].[Testine2] (busena);
    SELECT * FROM [ITWORKS].[dbo].[Testine2];

我得到的结果:

Itemid  Itemname Busena 
100001  TEST      NULL 
NULL    Null      UPADTE

我想要的结果:

Itemid  Itemname Busena
100001  TEST      UPDATE

【问题讨论】:

  • 请分享你的表结构??还有你使用的是哪个数据库??
  • 表 [ITWORKS].[dbo].[Testine2] 是 Itemid Itemname Busena 和 [ITWORKS].[dbo].[Testinus] 是 Itemid Itemname 它的 mssql 2008

标签: sql-server sql-server-2008 merge output


【解决方案1】:

我希望如果单元格被更新,该字段将被标记为 “更新”

没有理由使用输出。只需在更新中设置列值即可。

MERGE [ITWORKS].[dbo].[Testine2] te
    USING [ITWORKS].[dbo].[Testinus] bo
    ON te.itemid = bo.itemid
    AND te.itemname <> bo.itemname
    WHEN MATCHED THEN
      UPDATE
      SET te.itemname = bo.itemname,
          te.Busena = 'UPDATE';

SELECT * FROM [ITWORKS].[dbo].[Testine2];

【讨论】:

    猜你喜欢
    • 2017-08-22
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2012-05-31
    • 1970-01-01
    相关资源
    最近更新 更多