将多行插入公司 - 参数 - 值表

时间:2012-03-07 22:27:16

标签: sql sql-server-2008 insert

好吧,那么假设我有一个名为“COMPANY_PARAMETERS”的数据库,看起来像这样(前两列是键):

COMP_ID | PARAM_NAME | PARAM_VALUE
   A    | parameter 1| 10
   A    | sample_ind | Y
   B    | parameter 1| 20
   B    | sample_ind | N

我想为表中的每个公司ID插入一个新参数,让我们在表中输入参数2。我不知道哪个公司可以期待,因为任何客户都可以拥有他们想要的任何公司ID,因此一个客户可能有公司ID 1,2,3,4而另一个可能有A,B,C,D等。使用我们在更新数据库时存储在存储库中的一系列更新脚本。我已经四处询问,这是一个罕见的(唯一)表格,对每个客户来说都是独一无二的,但无论如何我还是想尝试。

我一直在使用数据库不到一年,我真的不知道从哪里开始这样的问题。我的猜测是使用select语句查找所有唯一的comp_Ids,然后为每一个插入一行。

非常感谢您的帮助。

-Asaf

1 个答案:

答案 0 :(得分:1)

INSERT INTO COMPANY_PARAMETERS
    (COMP_ID, PARAM_NAME)
    SELECT DISTINCT cp.COMP_ID, 'parameter 2'
        FROM COMPANY_PARAMETERS cp;

如果您想要格外小心,可以扩展查询以确保新参数不存在。

INSERT INTO COMPANY_PARAMETERS
    (COMP_ID, PARAM_NAME)
    SELECT DISTINCT cp.COMP_ID, 'parameter 2'
        FROM COMPANY_PARAMETERS cp
        WHERE NOT EXISTS(SELECT 1
                             FROM COMPANY_PARAMETERS cp2
                             WHERE cp2.COMP_ID = cp.COMP_ID
                                 AND cp2.PARAM_NAME = 'parameter 2');