0
注意:我从sql表导入数据。并在此之后,我想插入数据在表中,但是当它找到相同的ContractNo(合同编号)它将更新数据,当它发现不同的ContractNo(合同编号)它将插入一个新的记录更新合并查询与sql中的where子句
但我合并查询不适用于where语句。
string mergeSql = "merge into " + tableName + " as Target " +
"using Ro_Consumers_Temp as Source " +
"on " +
"Target.ContractNo=Source.ContractNo " +
"when not matched then " +
"insert values (Source.Ronumber,Source.ContractNo,Source.BusinessPartner,Source.ContractAccount,Source.IBC,Source.Portion,Source.MRU,Source.Installation,Source.MeterNo,Source.LegacyNumber,Source.ConsumerNo,Source.ConsumerName,Source.Address,Source.Tariff,Source.ROAgent,Source.IBCName,Source.CD,Source.Batch,Source.JasbNumber,Source.SheetNo, Source.ContactName,Source.ContactNumber,Source.FOName,Source.[Address&LandMark],Source.NatureOfBusiness)" +
"when matched then update set Batch = Source.Batch, JasbNumber = Source.JasbNumber Where Target.Batch=Source.Batch;";
你可以添加一个子句到'when',比如'当不匹配时Target.Batch = Source.Batch',而不是在更新中有'where'。 https://msdn.microsoft.com/en-us/library/bb510625.aspx – juharr
为了您自己的利益,请使用参数化查询,因为这很可能是针对sql注入的。 – user2366842
您可以通过在QUOTENAME中包装tableName来帮助最大限度地降低sql注入的风险。 –