我需要在我的项目中实现功能:
我必须从包含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列的数据相同
请指导我构建查询
答案 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行。