为每行插入标识符

问题描述 投票:-2回答:2

我对PL / SQL和其他类似的东西并不熟悉。

我正在创建一个“表格选择......”。之后我得到了另一个将数据插入同一个表的语句。我想确定添加的数据。与来自第一个带有id:“A”的语句的数据和来自带有id:“B”的第二个语句的数据相同。

我怎样才能做到这一点?我已经添加了一个名为RUN_IDENTIFIER的新列,下一步是什么?

我可以在PL / SQL中作为过程或在Visual Studio 2008中作为SSIS包执行此操作吗?

谢谢,pronax

oracle visual-studio plsql procedure
2个回答
0
投票

希望我能回答你的问题。我回答之前回顾一下。您使用以下语句创建并填充了表RUN

 create table RUN as (select * from ABC minus select * from DEF);
 insert into RUN (select * from DEF minus select * from ABC);

然后你添加了一个列RUN_IDENTIFIER到表RUN。现在,您希望使用标识符填充列RUN_IDENTIFIER。序号如何? Oracle的序列号很好。在Oracle中,序列总是为您提供另一个序列号。

 CREATE SEQUENCE RUN_ID_SEQUENCE;

然后你更新表

 UPDATE RUN SET RUN_IDENTIFIER=RUN_ID_SEQUENCE.NEXTVAL;

这是一个小小的演示。我用一个简单的insert语句创建表:

create table mytable (text varchar2(20));
insert into mytable values ('abc');
insert into mytable values ('xyz');
select * from mytable;

alter table mytable add run_identifier number;
create sequence mysequence;
update mytable set run_identifier=mysequence.nextval;

select * from mytable;
drop table mytable;
drop sequence mysequence;

输出:

Table created.
1 row created.
1 row created.

TEXT                
--------------------
abc                 
xyz                 

2 rows selected.
Table altered.
Sequence created.
2 rows updated.

TEXT                 RUN_IDENTIFIER
-------------------- --------------
abc                               1
xyz                               2

2 rows selected.
Table dropped.
Sequence dropped.

0
投票

谢谢您的回答。我想到了一个序列,但我决定用一个子选择来解决我的问题。

喜欢:

CREATE TABLE AS(
 select 1 as RUN_IDENTIFIER, run1.* from(
             select * from abc MINUS select * from def)run1 
             UNION ALL
 select 2 as RUN_IDENTIFER, run2.* from(                 
            select * from def MINUS select * from abc)run2);

谢谢您的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.