-2

我需要在我的项目中实现一个功能:我必须从具有列的表中

选择105,然后在更新检索到的数据的 2 列(来自选择查询)后将数据插入同一个表中......查询将用于实现相同的功能。

示例:(10行)column1中的数据是'zz','zz','zz','zz','zz','zz','zz','zz','zz','zz'。
column2 中的数据是 'ClassA','ClassB','ClassC','ClassD','ClassE','ClassA','ClassB','ClassC','ClassD','ClassE'

INSERT INTO tableT (SELECT * FROM tableT (update column1='yy',column2=append '_tt' on the existing data in the rows column))

触发查询后,我们有20 条记录,10 条旧的和 10 条新的。
10 条新记录数据将在 column1 为
column2 中的 'yy','yy','yy','yy','yy','yy','yy','yy','yy','yy' 数据是'ClassA_tt','ClassB_tt','ClassC_tt','ClassD_tt','ClassE_tt','ClassA_tt','ClassB_tt','ClassC_tt','ClassD_tt','ClassE_tt'

其余3列数据相同

请指导我构建查询

4

1 回答 1

1

这取决于查询的大小以及更新数据的方式。但是对于您的示例,您可以使用

insert into table (column1,column2)
select decode(column2,'1','yy','2','zz',null) col1, col2 from table;

编辑:

在你改变你的问题后,我根本不明白你想要做什么。请解释一下:

column2 中的数据是 abc、bcd、dce、xyz 等

因为我没有得到模式。

编辑2:

好的。开始了:

INSERT INTO <table_name> (col1,col2,col3,col4,col5)
SELECT col1,col2,col3,col4,col5 
FROM (
    select  'yy' as col1 , (col2 || '_tt') as col2,col3,col4,col5, rownum r_num 
    from <table_name>
) where r_num <= 10;

你没有指定你想要哪 10 行。这将选择并更改内部选择查询返回的前 10 行。

于 2012-05-25T10:02:15.140 回答