真的可以在更新查询中使用一些帮助...(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'
非常感谢任何帮助。我正在试着各种各样的逻辑和语法,从创建临时表到其他类型的连接都没有运气。
答案 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.