尝试在字符串字段上进行SQL表更新匹配

时间:2011-10-21 15:46:03

标签: sql sql-server-2008 sql-server-2008r2-express

真的可以在更新查询中使用一些帮助...(SQL Serer 2008 R2 Express) 我有两个表,tblJPtblMaster

我只有一个在两个表之间匹配的字符串字段。

tblJP AND tblMaster

时,我需要使用tblJP.LangString更新tblMaster.Long_text
tblJP.short_text = tblMaster.short_text AND tblMaster.Lang = 'jp'

非常感谢任何帮助。我正在试着各种各样的逻辑和语法,从创建临时表到其他类型的连接都没有运气。

2 个答案:

答案 0 :(得分:6)

使用INNER JOIN进行简单更新应该可以解决问题。

UPDATE     tblJP
SET        tblJP.LangString = tblMaster.Long_Text
FROM       tblJP
INNER JOIN tblMaster ON tblMaster.alt_text = tblJP.short_text
WHERE      tblMaster.Lang = 'jp'

警告:在未先针对开发服务器进行测试的情况下,切勿对生产服务器运行更新语句 - 尤其是当其他人编写SQL时。

答案 1 :(得分:1)

您也可以使用MERGE

MERGE INTO tblJP
USING (SELECT *
       FROM   tblMaster
       WHERE  Lang = 'jp') AS SOURCE
ON SOURCE.alt_text = tblJP.short_text
WHEN MATCHED THEN
  UPDATE SET LangString = SOURCE.Long_Text;  

如果JOIN返回多行,您将收到错误警告The MERGE statement attempted to UPDATE or DELETE the same row more than once.