如何从两个表创建插入语句脚本

Posted

技术标签:

【中文标题】如何从两个表创建插入语句脚本【英文标题】:How to create insert statements script from two tables 【发布时间】:2021-01-12 17:08:29 【问题描述】:

我正在使用 oracle SQL,我需要向多个用户插入数据,但我需要先创建插入语句并仅替换第一个插入语句中的用户 ID,如下所示:

1- 这是插入语句:

    INSERT INTO SYS_USER_FUNCTIONS ( USER_ID, FUNCTION_ID_PARENT, FUNCTION_ID_CHILD, A, U,
    D, V, R, CREATING_USER, CREATING_DATE, CREATING_TIME, LAST_UPDATE_DATE, LAST_UPDATE_COUNT,
    LAST_UPDATE_USER, LAST_UPDATE_TRANSACTION, S ) 
   VALUES ( 'JAD', 'DOCMDOC', 'OPDA100', 1, 1, 2, 1, 2, 'ZYAD', 20210112, 1515, 20210112
    , 1, 'ZYAD', 'I', 2); 

COMMIT;

2- 我只需要生成插入语句并替换 `

USER_ID

并从下表中选择 USER_ID

SELECT USER_ID 
FROM USERS 
WHERE USER_FUNCTION = 'DOCMDOC'

我该怎么做?

【问题讨论】:

【参考方案1】:

我想你只是想要insert . . . select:

INSERT INTO SYS_USER_FUNCTIONS ( USER_ID, FUNCTION_ID_PARENT, FUNCTION_ID_CHILD, A, U,
    D, V, R, CREATING_USER, CREATING_DATE, CREATING_TIME, LAST_UPDATE_DATE, LAST_UPDATE_COUNT,
    LAST_UPDATE_USER, LAST_UPDATE_TRANSACTION, S ) 
   SELECT u.id, 'DOCMDOC', 'OPDA100', 1, 1, 2, 1, 2, 'ZYAD', 20210112, 1515, 20210112
    , 1, 'ZYAD', 'I', 2
   FROM Users
   WHERE USER_FUNCTION = 'DOCMDOC';

【讨论】:

【参考方案2】:

您可以为多个用户使用简单的 for-loop plsql 块并修改您想要的内容:

begin
for i in (SELECT USER_ID FROM USERS WHERE USER_FUNCTION = 'DOCMDOC')
loop
INSERT INTO SYS_USER_FUNCTIONS ( USER_ID, FUNCTION_ID_PARENT, FUNCTION_ID_CHILD, A, U,
    D, V, R, CREATING_USER, CREATING_DATE, CREATING_TIME, LAST_UPDATE_DATE, LAST_UPDATE_COUNT,
    LAST_UPDATE_USER, LAST_UPDATE_TRANSACTION, S ) 
   VALUES ( i.USER_ID, 'DOCMDOC', 'OPDA100', 1, 1, 2, 1, 2, 'ZYAD', 20210112, 1515, 20210112
    , 1, 'ZYAD', 'I', 2); 
end loop;
end; 

或者插入...仅针对这种情况选择。

INSERT INTO SYS_USER_FUNCTIONS ( USER_ID, FUNCTION_ID_PARENT, FUNCTION_ID_CHILD, A, U, D, V, R, CREATING_USER, CREATING_DATE, CREATING_TIME, LAST_UPDATE_DATE, LAST_UPDATE_COUNT,LAST_UPDATE_USER, LAST_UPDATE_TRANSACTION, S ) 
SELECT USER_ID, 'DOCMDOC', 'OPDA100', 1, 1, 2, 1, 2, 'ZYAD', 20210112, 1515, 20210112, 1, 'ZYAD', 'I', 2 FROM USERS WHERE USER_FUNCTION = 'DOCMDOC';

【讨论】:

以上是关于如何从两个表创建插入语句脚本的主要内容,如果未能解决你的问题,请参考以下文章

怎么用SQL语句同步两个表中的字段值?

如何用SQL语句删除两个表中相同的记录?

如何使用oracle中的触发器从另外两个表中插入一个表中的数据

如何将一个数据库中的一个表复制到另一个数据库中去

如何编写 AWS Glue 脚本以将新数据插入 Redshift 表

如何避免这两个 SQL 语句之间出现死锁?