在更新所选数据的x列数据后插入oracle

时间:2012-05-25 09:19:22

标签: sql oracle

我需要在我的项目中实现功能:

我必须从包含10列的表中选择 5,然后在更新检索到的2列数据后(从select查询中)将数据插入到同一个表中。 .. what query将用于实现相同的功能。

示例:(10行) column1中的数据为'zz','zz','zz','zz','zz','zz','zz','zz','zz','zz'。
第2列中的数据是“ClassA”,“ClassB”,“ClassC”,“ClassD”,“ClassE”,“ClassA”,“ClassB”,“ClassC”,“ClassD”,“ClassE”

INSERT INTO tableT(SELECT * FROM tableT(更新column1 ='yy',column2 =在行列中的现有数据上附加'_tt'))

点火查询后,我们有 20条记录,10条旧记录和10条新记录 将有10条新记录数据 column1是'yy','yy','yy','yy','yy','yy','yy','yy','yy','yy'
第2列中的数据是'ClassA_tt','ClassB_tt','ClassC_tt','ClassD_tt','ClassE_tt','ClassA_tt','ClassB_tt','ClassC_tt','ClassD_tt','ClassE_tt'

其他剩余3列的数据相同

请指导我构建查询

1 个答案:

答案 0 :(得分:1)

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

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

修改

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

  第2列中的

数据是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行。