0

真的可以在更新查询方面使用一些帮助...(SQL Serer 2008 R2 Express)我有两个表,tblJP并且tblMaster.

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

tblJP AND tblMaster

我需要更新tblJP.LangString什么tblMaster.Long_text时候

tblJP.short_text = tblMaster.short_text AND tblMaster.Lang = 'jp'

任何帮助将不胜感激。我正在转动我的轮子,尝试从创建临时表到其他类型的连接的各种逻辑和语法,但都没有运气。

4

2 回答 2

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 时。

于 2011-10-21T15:49:55.257 回答
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.

于 2011-10-21T16:11:39.627 回答