若数据库中存在要更新的数据,则应在SQL Server中插入新记录
我创建了一个insert语句,以便在数据不存在时将数据添加到DB中 插入SampleListSampleId、类型、说明 选择编号样本ID、编号类型、编号描述 从值1、'A'、'AA', 2、'B'、'BB', 3、'C'、'CC', 4、'D'、'DD' AS nr样本ID、类型、描述 在cr.SampleId=nr.SampleId上左连接采样列表cr 其中cr.SampleId为NULL 但是如果数据库中存在数据,我还想更新这些行 您能帮我吗?您可以使用合并: 但是,您可以仅使用值简化子查询: 您可以使用“合并”: 但是,您可以仅使用值简化子查询:若数据库中存在要更新的数据,则应在SQL Server中插入新记录,sql,database,sql-server-2012,automation,Sql,Database,Sql Server 2012,Automation,我创建了一个insert语句,以便在数据不存在时将数据添加到DB中 插入SampleListSampleId、类型、说明 选择编号样本ID、编号类型、编号描述 从值1、'A'、'AA', 2、'B'、'BB', 3、'C'、'CC', 4、'D'、'DD' AS nr样本ID、类型、描述 在cr.SampleId=nr.SampleId上左连接采样列表cr 其中cr.SampleId为NULL 但是如果数据库中存在数据,我还想更新这些行 您能帮我吗?您可以使用合并: 但是,您可以仅使用值简化子查
这被称为一次尝试。你能告诉我们你在这个问题上的尝试吗?不起作用的意思是什么?从值1、'A'、'AA',2、'B'、'BB',3、'C'、'CC',4、'D'、'DD'中选择nr.SampleId、nr.Type、nr.Description作为nr-SampleId、Type合并样本列表cr,匹配时cr.SampleId=nr.SampleId上的说明,然后更新设置cr.Type=nr.Type,cr.Description=nr.Description,如果目标不匹配,则插入SampleId,Type,说明值nr.SampleId,nr.Type,nr.Descriptionabove命令显示一个语法错误:关键字“ON”附近的语法不正确。这称为尝试此操作。你能告诉我们你在这个问题上的尝试吗?不起作用的意思是什么?从值1、'A'、'AA',2、'B'、'BB',3、'C'、'CC',4、'D'、'DD'中选择nr.SampleId、nr.Type、nr.Description作为nr-SampleId、Type合并样本列表cr,匹配时cr.SampleId=nr.SampleId上的说明,然后更新设置cr.Type=nr.Type,cr.Description=nr.Description,如果目标不匹配,则插入SampleId,Type,说明值nr.SampleId,nr.Type,nr.description上述命令显示一个语法错误:关键字“ON”附近的语法不正确。非常感谢。这是预期的功能。你让我很开心,非常感谢。这是预期的功能。你让我开心
MERGE SampleList cr
USING (SELECT nr.SampleId, nr.[Type], nr.[Description]
FROM (VALUES (1,'A','AA'), (2,'B','BB'), (3,'C','CC'), (4,'D','DD')
) as nr (SampleId, [Type], [Description])
) AS nr -- Use missed alias
ON (cr.SampleId = a.SampleId)
WHEN MATCHED THEN
UPDATE SET cr.[Type] = nr.[Type], cr.[Description] = nr.[Description]
WHEN NOT MATCHED BY TARGET THEN
INSERT (SampleId, [Type], [Description])
VALUES (nr.SampleId, nr.[Type], nr.[Description]); -- to terminate the merge
MERGE SampleList cr
USING ( VALUES (1,'A','AA'), (2,'B','BB'), (3,'C','CC'), (4,'D','DD')
) AS nr(SampleId, [Type], [Description])
ON (cr.SampleId = a.SampleId)
WHEN MATCHED THEN
UPDATE SET cr.[Type] = nr.[Type], cr.[Description] = nr.[Description]
WHEN NOT MATCHED BY TARGET THEN
INSERT (SampleId, [Type], [Description])
VALUES (nr.SampleId, nr.[Type], nr.[Description]); -- to terminate the merge