【问题标题】:SQL Server - Add row for every distict column valueSQL Server - 为每个不同的列值添加行
【发布时间】:2017-11-26 19:50:32
【问题描述】:

我需要为表中的每个 Distinct ResourceId 添加一个新行。我可以通过使用查询轻松获得这些:

SELECT Distinct ResourceId FROM [dbo].[Localizations]

现在,我需要在表格中添加一行。行的格式为

Id       ResourceId             Resourceset    Value             LocaleId
53591    AssessmentType_21      /Assessemnts   Task Format       en
53247    Attr_Description_1     /Description   Concentration     en
53378    Attr_Description_132   /Description   Affirmation       en

每个ResourceId 可以有多个LocaleIds,但我只希望每个ResourceId 插入一行。

我需要插入的新行格式如下:

  • ResourceId & Resourceset 保持不变

  • 值将始终为Resourceset.ResourceId

  • LocaleId 将永远是mk

因此,对于上面的示例,我需要编写一个查询,将以下 3 行插入到表中。 (仅以 ID 为例)

Id       ResourceId             Resourceset     Value                                LocaleId
60001    AssessmentType_21      /Assessemnts    /Assessemnts.AssessmentType_21        mk
60002    Attr_Description_1     /Description    /Description.Attr_Description_1       mk
60003    Attr_Description_132   /Description    /Description.Attr_Description_132     mk

希望这很清楚 - 这不是最容易解释的。进行了搜索,但没有类似的问题。对此的任何帮助表示赞赏。

【问题讨论】:

    标签: sql-server tsql insert distinct


    【解决方案1】:

    如果我理解正确:

    insert into localizations (ResourceId, Resourceset, Value, LocaleId)
        select distinct ResourceId, Resourceset,
               '/' + Resourceset + '.' + ResourceId, 'mk'
        from localizations;
    

    这假设 ResourceId/Resourceset 对是唯一的。

    这还假设id 是自动分配的(即,它是identity 列)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多