怎样将应用文结构有哪些内容完全一样的两个表的内容合并到一个表中,SQL语句

博客访问: 125551
博文数量: 31
博客积分: 1416
博客等级: 上尉
技术积分: 300
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
如何通过SQL将不同数据库表中记录两行合并为一行
问题如下(以Oracle数据库为例):
select * from T1;
ID NAME & & & &&AGE & &MOBILE---------- ---------- ----------
-----------1 yanghengli&&& 18 & & XXX2 lijiajie&&&&& 18 & & XXX
select * from T2;
ID BOOKNAME&&&&&&&&&&&& OWNER_ID& BOOKDESC---------------------------------------------------------------1 test1&&&&&&&&&&&&&&&& 1& &&&&&& test first2 test1&&&&&&&&&&&&&&&& 1& &&&&&& test first3 test1&&&&&&&&&&&&&&&& 2& &&&&&& test lijiajie 14 test1&&&&&&&&&&&&&&&& 2& &&&&&& test lijiajie 2
需要得到如下结果:&
1 &&&&yanghengli XXX &
test first,test first2 &&&&lijiajie&& XXX & test lijiajie 1,test lijiajie 2&
尝试方法:
create table t3(t1_id int,t1_name varchar2(10),t1_mobile varchar2(11),t2_bookdesc varchar2(100));
&insert into t3(t1_id,t1_name,t1_mobile)
(select id,name,mobile from t1);&
spool c:\\test.select 'update t3 set t2_bookdesc =
concat(t2_bookdesc,''' || concat(',',bookdesc) || ''') where t1_id = ' ||
owner_id || ';' from t2;
打开c:\\test.txt,得到如下内容:
SQL& select 'update t3 set t2_bookdesc =
concat(t2_bookdesc,''' || concat(',',bookdesc) || ''') where t1_id = ' ||
owner_id || ';' from t2;
'UPDATET3SETT2_BOOKDESC=CONCAT(T2_BOOKDESC,'''||CONCAT(',',BOOKDESC)||''')WHERET
--------------------------------------------------------------------------------
update t3 set t2_bookdesc =
concat(t2_bookdesc,',test first') where t1_id = 1;&
update t3 set t2_bookdesc =
concat(t2_bookdesc,',test first') where t1_id = 1;&
update t3 set t2_bookdesc =
concat(t2_bookdesc,',test lijiajie 1') where t1_id =
&2;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
update t3 set t2_bookdesc = concat(t2_bookdesc,',test
lijiajie 2') where t1_id =
&2;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
对该文件进行编辑,删除select结果的头尾,得到如下内容:
update t3 set t2_bookdesc =
concat(t2_bookdesc,',test first') where t1_id = 1;&update t3 set t2_bookdesc =
concat(t2_bookdesc,',test first') where t1_id = 1;&update t3 set t2_bookdesc =
concat(t2_bookdesc,',test lijiajie 1') where t1_id =
&2;&&&&&&&&&&
&update t3 set t2_bookdesc =
concat(t2_bookdesc,',test lijiajie 2') where t1_id =
&2;&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
在sql窗口执行以下语句:@c:\\test.txt
执行完毕之后,再检查t3表中内容:
select * from t3;
T1_ID T1_NAME&&&&&& T1_MOBILE&&&& T2_BOOKDESC--------------------------------------------------------------------------------------1 &&&&yanghengli && &&& ,test first,test first2&&&&
lijiajie&& &&
&& ,test lijiajie 1,test lijiajie 2
说明:这个问题基本上可以通过以下方法来应对:1、通过在数据库内自定义函数来处理2、通过自定义存储过程来处理3、编程逐行遍历数据,自行组合字符串4、通过SQL+数据库提供的文件输出功能。第1、2种方法主要是通过数据库游标来遍历组合字符串,第3种方法就不再赘述,本文即是利用第4种方法。
阅读(6530) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。其他回答(4)
insert into B select * from A where Id not in(select Id from B)
然后再用ado.net操作sql语句
楼上的方法可行。
园豆:1410
update t1 set c1=t2.c2 from t2 where t1.Id=t2.Id
还有一个没有就插入的呢??
select * into 新表明 from 表名 where条件
&&&您需要以后才能回答,未注册用户请先。把这几张表的数据放在一起,怎么实现这条sql语句
把这几张表的数据放在一起,怎么实现这条sql语句 &
怎么把发送人数表,和订阅人数表,通过营销id 关联查询起来
& --营销活动-用户关系表
& select t.*, t.rowid from marketing_userinfo t
& --发送人数
& & select & count(1) from service_user d where &d.service_id=( select p.service_id & &from service_type p&
& & where p.service_id =( &select n.service_id &from service_marketing n &where n.marketing_id =2264) )
& & --订阅人数
& & &select t.marketing_id ,t.userinfo_id from marketing_userinfo t group by t.marketing_id,t.userinfo_id
&-- 被订阅的 营销活动
select e.* from marketing e where e.marketing_id in ( select & t.marketing_id from marketing_userinfo t)
一起,怎么实现这条sql语句 &
以下是问题补充:
:要用一句sql执行 ,全部集合在一起, 是不是要另外建一个子类,做为容器,把这几张表的数据合租一起
你不如贴各个表有哪些字段,然后直接说你要查什么,看你这需求就没欲望往下看。
这个是用left join就可以了。。当然其中要有一个字段都能关联上
神马数据库?
如果是oracle的话可以发送人数建一个视图
订阅人数建一个视图
被订阅的 营销活动建一个视图
然后3个视图联合起来查询。
或者select from (select t.*, t.rowid from marketing_userinfo t) tabl1,(select t.marketing_id ,t.userinfo_id from marketing_userinfo t group by t.marketing_id,t.userinfo_id) table2,(select e.* from marketing e where e.marketing_id in ( select & t.marketing_id from marketing_userinfo t) table 3 where xxxxx

我要回帖

更多关于 供给侧结构性改革内容 的文章

 

随机推荐