【发布时间】:2012-01-03 17:43:16
【问题描述】:
当主键匹配并且没有带有活动“Y”插入记录的行时,我想执行以下操作。这可能吗?
我试过了:
-- Merge statement
MERGE INTO table1 AS DST
USING table2 AS SRC
ON (SRC.Code = DST.Code)
--Existing records updated if data changes
WHEN MATCHED
AND IF NOT EXISTS (WHERE active='Y' FROM table1 )
THEN
INSERT INTO table1 (colum)
SELECT value
+-------+-------------+--------+
| Code | description | Active |
+-------+-------------+--------+
| AB | just | |
| | something | No |
+-------+-------------+--------+
只有当没有相同代码的活动记录时,我才想插入一条记录。新记录如下所示
+-------+-------------+--------+
| Code | description | Active |
+-------+-------------+--------+
| AB | something | |
| | else | YES |
+-------+-------------+--------+
我希望它更清楚
编辑:没关系,这是不可能的,我刚刚收到此错误消息: MERGE 语句的“WHEN MATCHED”子句中不允许“INSERT”类型的操作。
【问题讨论】:
-
这不是合并的工作方式。考虑使用传统的 IF。
-
表结构示例数据和预期的最终结果将有助于理解您的问题并提供和回答。
-
我在编辑帖子时遇到了一些问题,但现在有一些示例数据
标签: sql sql-server merge