我有个问题。我正在使用MS SQL Server Management Studio。

我的词典表有很多翻译。我需要将完整的描述从一个languageID复制到另一个languageID。

下面的例子。

LanguageID | Description
    2      | Some text
    2      | More text
    2      | Some more text
   10      | *needs to be replaced
   10      | *needs to be replaced
   10      | *needs to be replaced


结果必须是这样的:

LanguageID | Description
    2      | Some text
    2      | More text
    2      | Some more text
   10      | Some text
   10      | More text
   10      | Some more text


LanguageID 2和10的描述必须完全相同。

我当前的查询遇到错误:

update tblDictionary
set Description = (Select Description from tblDictionary where
tblDictionary.LanguageID = 2)
where LanguageID = 10



消息512,级别16,状态1,行1子查询返回了多个1
值。当子查询遵循=,!=,

,> =或将子查询用作表达式时。该语句已终止。

最佳答案

如果LanguageID 10的所有翻译必须与languageID 2的翻译完全相同,则可以轻松删除ID 10的所有翻译,然后重新插入。
像这样

delete from tblDictionary where LanguageID = 10;

insert into tblDictionary (LanguageID, Description)
select 10, d.Description
from   tblDictionary d
where  d.LanguageID = 2


此方法还具有以下优点:如果LanguageID = 10的记录较少,那么LanguageID = 2的记录将在同一过程中更正。

如果tblDictionary中的列多于需要修改的插入语句

关于sql - SQL更新1个表中的多行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48661053/

10-10 18:45