【问题标题】:T-SQL Merge - when matched update column and when not matched insert entire rowT-SQL Merge - 当匹配更新列和不匹配时插入整行
【发布时间】:2017-06-11 12:31:24
【问题描述】:

我有两张桌子;

虚拟表

Column1 | Column2 | Column3
a       | b       | c

好表

Column1 | Column2 | Column3
a       | b       | c

我是 T-SQL 新手,需要以下帮助;

使用条件将 DummyTable 中的数据合并到 GoodTable 中

  • 条件:当 DummyTable 的 Column2 匹配 GoodTable 的 Column2 时
    更新 GoodTable 的 Column3,用 DummyTable 的 Column 3,否则不匹配时,将 DummyTable 的行插入 GoodTable

以下是我不工作的尝试

MERGE INTO GoodTable AS Target
USING (VALUES (SELECT Column2 FROM DummyTable)) AS source (Column2)
ON Target.Column2 = Source.Column2
WHEN MATCHED BY TARGET THEN
UPDATE (Column2) VALUES (Column2)
WHEN NOT MATCHED BY TARGET THEN
INSERT INTO GoodTable VALUES DummyTable

【问题讨论】:

  • 您收到的错误信息是什么?
  • @Jason 即关键字“SELECT”附近的语法不正确。但几乎整个上述查询更像是一个伪代码而不是一个真正的查询

标签: sql sql-server tsql


【解决方案1】:

看看这是否适合你。这是基于您上面的逻辑。

MERGE INTO GoodTable AS Target
USING DummyTable AS Source
ON Target.Column2 = Source.Column2
WHEN MATCHED THEN
UPDATE SET Column3 = source.Column3
WHEN NOT MATCHED THEN
INSERT (Column1,Column2,Column3) --Column names in target table
VALUES (Column1,Column2,Column3); --Column names in source table

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    相关资源
    最近更新 更多