SQL Server - 为每个distict列值添加行

时间:2017-11-26 19:50:33

标签: sql-server tsql insert distinct

我需要为Table中的每个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

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

我需要插入的新行将采用以下格式:

  • ResourceId& Resourceset保持不变

  • 值始终为ResourcesetResourceId

  • LocaleId始终为mk

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

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

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

1 个答案:

答案 0 :(得分:1)

如果我没有正确理解:

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

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

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