oracle中返回多行的同一字段,并拼装成一行
有一张表T,字段如下tel,code查询最多返回4行,现在要把返回每一行的这两个字段拼装成一行,该怎么做呢据说可以用游标循环来做,我想要得到的结果是用拼装出来的这一行来执...
有一张表T,字段如下
tel,code
查询最多返回4行,
现在要把返回每一行的这两个字段拼装成一行,该怎么做呢
据说可以用游标循环来做,
我想要得到的结果是用拼装出来的这一行来执行另一个表的更新操作
可能是我表达没清楚哈,是这样的有两个表,T1和T2
T1字段:tel1,code1,tel2,code2,tel3,code3
T2字段:tel,code
现在要把T2查出来的记录(不会超过3条)更新给T1
比如有两条记录,那第一条的tel,code分别赋值给tel1,code1,第2条的赋值给tel2,code2 展开
tel,code
查询最多返回4行,
现在要把返回每一行的这两个字段拼装成一行,该怎么做呢
据说可以用游标循环来做,
我想要得到的结果是用拼装出来的这一行来执行另一个表的更新操作
可能是我表达没清楚哈,是这样的有两个表,T1和T2
T1字段:tel1,code1,tel2,code2,tel3,code3
T2字段:tel,code
现在要把T2查出来的记录(不会超过3条)更新给T1
比如有两条记录,那第一条的tel,code分别赋值给tel1,code1,第2条的赋值给tel2,code2 展开
2个回答
展开全部
看个例子
SQL> select * from test;
ID SE NAME
---------- -- ----------
1 clark
2 johns
3 james
SQL> create table test1(id int,name varchar2(10));
表已创建。
SQL> insert into test1 values(1,'');
已创建 1 行。
SQL> insert into test1 values(2,'');
已创建 1 行。
SQL> insert into test1 values(3,'');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from test1;
ID NAME
---------- ----------
1
2
3
QL> update test1 a set name=(select id||name as name from test b where a.id=b.id);
已更新3行。
SQL> commit;
提交完成。
SQL> select * from test;
ID SE NAME
---------- -- ----------
1 clark
2 johns
3 james
SQL> select * from test1;
ID NAME
---------- ----------
1 1clark
2 2johns
3 3james
SQL> select * from test;
ID SE NAME
---------- -- ----------
1 clark
2 johns
3 james
SQL> create table test1(id int,name varchar2(10));
表已创建。
SQL> insert into test1 values(1,'');
已创建 1 行。
SQL> insert into test1 values(2,'');
已创建 1 行。
SQL> insert into test1 values(3,'');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from test1;
ID NAME
---------- ----------
1
2
3
QL> update test1 a set name=(select id||name as name from test b where a.id=b.id);
已更新3行。
SQL> commit;
提交完成。
SQL> select * from test;
ID SE NAME
---------- -- ----------
1 clark
2 johns
3 james
SQL> select * from test1;
ID NAME
---------- ----------
1 1clark
2 2johns
3 3james
追问
可能是我表达没清楚哈,是这样的有两个表,T1和T2
T1字段:tel1,code1,tel2,code2,tel3,code3
T2字段:tel,code
现在要把T2查出来的记录(不会超过3条)更新给T1
比如有两条记录,那第一条的tel,code分别赋值给tel1,code1,第2条的赋值给tel2,code2
追答
这个暂时 没想到什么好的办法 按你说的不会超过3条记录的话 可以用最笨的方法 substr+instr
看例子
SQL> select * from test1;
ID NAME
---------- ----------
1 clark
2 johns
3 james
SQL> select wm_concat(id||','||name) achar from test1
2 ;
ACHAR
--------------------------------------------------------------------------------
1,clark,2,johns,3,james
SQL> insert into testt select substr(achar,1,instr(achar,',',1)-1) as id1,substr(achar,instr(achar,',',1,1)+1,instr(achar,',',1,2)-instr(achar,',',1,1)-1) name1,substr(achar,instr(achar,',',1,2)+1,1) id2,substr(achar,instr(achar,',',1,3)+1,instr(achar,',',1,4)-instr(achar,',',1,3)-1) name2,substr(achar,instr(achar,',',1,4)+1,1) id3,substr(achar,instr(achar,',',1,5)+1) name3 from (select wm_concat(id||','||name) achar from test1);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from testt;
ID1 NAME1 ID2 NAME2 ID3 NAME3
---------- ---------- ---------- ---------- ---------- ----------
1 clark 2 johns 3 james
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询