【问题标题】:Updating or inserting SQL Server destination table data based on conditions from source table data根据源表数据的条件更新或插入 SQL Server 目标表数据
【发布时间】:2019-12-19 06:40:47
【问题描述】:

我有两个 SQL Server 表,一个是我的目标表 (LocaleStringResource),另一个是源表 (TempResourceSunil)。

源表有以下列:TempResourceSunil

[ID], [LanguageId], [ResourceName], [ResourceValue], [Burmese], [Unicode]

目标表的列是LocaleStringResource

[Id], [LanguageId], [ResourceName], [ResourceValue]

我想根据源文件中的[ResourceName] 更新目标表[ResourceValue]

例子:

[ResourceName] = 'Account.AccountActivation' 

表示我想检查它在LocaleStringResource 表中是否有对应的缅甸语[ResourceValue],如果它不存在,我将从TempResourceSunil 和缅甸语列中取出并插入LocaleStringResource,语言为id =2

如果 [ResourceName] = 'Account.AccountActivation' 不存在用于 Unicode(语言 id = 3)的 [ResourceValue] 则相同,这意味着我想使用语言 id = 3TempResourceSunil 插入 [ResourceValue]

任何 SQL 专家可以帮助我吗?

【问题讨论】:

  • 请检查您的表格链接和您的文本...并且请再次检查示例中您的文本的逻辑。我相信在写作和解释方面存在一些错误......干杯!此外,在某一时刻,您将其称为源表和目标表,然后将它们称为源文件和目标文件,然后将它们称为 LocaleStringResource 表和 TempResourceSunil 表......为文本选择一个名称/别名并使用它。当有人阅读文本时,他看不到“LocaleStringResource”名称,因为他不会首先单击您提供的链接...
  • 另外,请标记您正在使用的数据库?是 SQLServer、MYSQL、Oracle 还是别的什么...
  • 任何答案的家伙???
  • 样本数据和期望的结果会有很大帮助。

标签: sql sql-server join sql-update sql-insert


【解决方案1】:

您提供的描述并没有真正充实,但是您想使用案例陈述。 CASE STATEMENT INFO 一个case语句可以有多个WHEN来覆盖多个逻辑语句。你甚至可以在另一个里面有一个。在这种情况下,我真的不会那样做。 下面的例子只是一个简单的版本。

如果 l.[ResourceValue] 为空且 l.[ResourceName] = 'Account.AccountActivation',则将 T.[Burmese] 的值用于列 l.[ResourceValue]。 ELSE 表示如果 case 语句中的 no When 为真,则使用此值。

另外请注意,如果您尝试在第 2 个字符串列中使用第一个表中的 INT 值,则需要将其转换为 varchar。

测试你的逻辑和案例陈述,看看你的进展如何。

SELECT
l.[Id], 
l.[LanguageId],
l.[ResourceName], 
CASE WHEN l.[ResourceName] =  'Account.AccountActivation' and l.[ResourceValue] is null then T.[Burmese]
else l.[ResourceValue] end as [ResourceValue],
T.[ID],
T.[LanguageId],
T.[ResourceName],
T.[ResourceValue],
T.[Burmese],
T.[Unicode]
FROM  LocaleStringResource as L
LEFT JOIN TempResourceSunil t on (t.ID = L.ID) and (t.[LanguageId] = l.[LanguageId])

【讨论】:

    猜你喜欢
    • 2018-03-30
    • 1970-01-01
    • 2011-02-16
    • 2013-05-04
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多