2012-03-07 25 views
1

好吧,让我们说我有一个名为“COMPANY_PARAMETERS”表看起来是这样的(前两列键)的数据库:插入多行成一个公司 - 参数 - 值表

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

我想插入一个新参数,让我们说参数2到表中,为表中的每个公司Id。我不知道哪个公司ID会期望,因为任何客户都可以拥有他们想要的任何公司ID,所以一个客户可能有公司ID 1,2,3,4,另一个可能有A,B,C,D等。在我们更新数据库时,使用我们存储在存储库上的一系列更新脚本。我问过,这是每个客户都很少见的罕见(唯一)表格,但我仍想尝试。

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

你的帮助是非常赞赏。

-Asaf

回答

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'); 
+0

非常感谢你好,先生。 – Asaf 2012-03-08 14:00:32