根据属性进行SQL条件多次插入

时间:2016-06-16 09:37:59

标签: sql oracle oracle11g

我有两个表已经有数据和一个无效关系表:

用户( idU ,idCreator,作业......)

许可( idP ,名称)

User_Permission( idU#,idP#,idCreator,...)

对于用户中的每一行,根据User.job值 ,我希望INSERT INTO User_Permission VALUES(aPermID, idU, idCreator, ...) idU is the own user's ID和{{1} }。

示例:

  • 如果 User.job =' Comm' ,我会idCreator is the User's ID creator
  • 如果 User.job =' Dev' ,我会INSERT INTO User_Permission VALUES(100, User.idU, User.idCreator, ...)INSERT INTO User_Permission VALUES(150, User.idU, User.idCreator, ...)

我不知道如何做到这一点。我正在使用Oracle,发布11g。

  

澄清idCreator属性

     

每个用户都是由另一个用户创建的   一。一个INSERT INTO User_Permission VALUES(200, User.idU, User.idCreator, ...)也由某人给出(这就是为什么   也是User_Permission

     

这里我试图恢复旧数据,所以默认情况下我选择制作   idCreatorUser_Permission.idCreator相同。

1 个答案:

答案 0 :(得分:2)

您需要一些将作业映射到Permid的表格。

insert into User_Permission(idU#, idP#, idCreator, ...)
select map.permID, u.idU, u.idCreator, ...
from User u
join ( -- job class to permid mapping
    select  'Comm' class, 100 permID  from dual 
    union all
    select 'Dev', 150 from dual 
    union all
    select 'Dev', 200 from dual 
) map on map.class= u.job