如何为n个valueitems插入多行

时间:2009-07-08 15:53:31

标签: sql oracle insert

我们的工具中有一个用于评估值的表,其中每个值都有valueid。不要问我是谁想出了这个所谓的设计,但现在我需要为每次评估添加多个valueid。

所以,它看起来像这样:

AssessmentId 1, ValueId 1, Value
AssessmentId 1, ValueId 2, Value
AssessmentId 1, ValueId 3, Value
AssessmentId 2, ValueId 1, Value
AssessmentId 2, ValueId 2, Value
AssessmentId 2, ValueId 3, Value

我现在可能需要一个子查询来返回所有不同的评估,并为每个我添加行的

AssessmentId 1, ValueId 7, empty
AssessmentId 1, ValueId 8, empty
AssessmentId 1, ValueId 9, empty
AssessmentId 2, ValueId 7, empty
AssessmentId 2, ValueId 8, empty
AssessmentId 2, ValueId 9, empty
...

老实说,我不知道如何实现这一目标。也许是一个小组的子选择,但是我如何将选定的评估结果放入新的插入内容?

编辑: 实际上,我们每次评估都有709个值,现在我们还需要24个以上的额外数据

foreach distinct assessmentid in table
{ 
   insert row (assessmentid, 710, null); 
   insert row (assessmentid, 711, null); 
   ... 
   insert row (assessmentid, 733, null); 
}

类似这样的事情

1 个答案:

答案 0 :(得分:3)

INSERT
INTO    i_should_really_name_the_tables_i_ask_about_on_stackoverflow_com (assessmentid, valueid)
SELECT  assessmentId, valueMax + lvl
FROM    (
        SELECT  assessmentId, MAX(valueId) AS valueMax
        FROM    i_should_really_name_the_tables_i_ask_about_on_stackoverflow_com t
        GROUP BY
                assessmentId
        ) a
CROSS JOIN
        (
        SELECT  level AS lvl
        FROM    dual
        CONNECT BY
                level <= 24
        ) l