java合并表的两行_如何通过SQL将不同数据库表中记录两行合并为一行
如何通过SQL将不同数据库表中记录两行合并为一行
问题如下(以Oracle数据库为例):
select * from T1;
ID NAME AGE MOBILE
---------- ---------- ----------
-----------
1 yanghengli18 13830557XXX
2 lijiajie18 13325116XXX
select * from T2;
ID BOOKNAMEOWNER_IDBOOKDESC
---------------------------------------------------------------
1 test11test first
2 test11test first
3 test12test lijiajie 1
4 test12test lijiajie 2
需要得到如下结果:
1 yanghengli 13830557XXXtest first,test first
2 lijiajie13325116XXXtest 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.txt;
select 'update t3 set t2_bookdesc =
concat(t2_bookdesc,''' || concat(',',bookdesc) || ''') where t1_id = ' ||
owner_id || ';' from t2;
spool off;
打开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;
SQL> spool off;
对该文件进行编辑,删除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_NAMET1_MOBILET2_BOOKDESC
--------------------------------------------------------------------------------------
1 yanghengli13830557XXX,test first,test first
2lijiajie13325116XXX,test lijiajie 1,test lijiajie 2
说明:
这个问题基本上可以通过以下方法来应对:
1、通过在数据库内自定义函数来处理
2、通过自定义存储过程来处理
3、编程逐行遍历数据,自行组合字符串
4、通过SQL+数据库提供的文件输出功能。
第1、2种方法主要是通过数据库游标来遍历组合字符串,第3种方法就不再赘述,本文即是利用第4种方法。
java合并表的两行_如何通过SQL将不同数据库表中记录两行合并为一行相关推荐
- sql同时修改两个表的数据_如何用SQL做数据透视表?
- 点击上方"中国统计网"订阅我吧!- 讲过很多次,数据分组和数据透视表很像,Sql 中的数据分组大家应该都很熟悉了,用的就是 group by. 数据透视表是作为一个数据分析师最 ...
- sql程序实现事物锁表和解锁_怎样用SQL给SQL2880特定表加锁解锁
展开全部 select * from table with (...) SELECT 语句中"加锁选项"的功能说明62616964757a686964616fe58685e5aeb ...
- mysql表无法获取_CentOS下无法正常获取MySQL数据库表数据的问题
Y~9vl5B{l1K+n0之前,由于客户要求在centOS下安装系统应用,因此有机会接触了一下CentOS,顺便也了解了下CentOS的常规操作,还有在CentOS下的相关操作.,U+_n@&quo ...
- You have an error in your SQL syntax +改动数据库表名后异常(已解决)【MySQL+SSM】
出现的问题: 1.改变数据库中的某个表名时,eclipse中报错为连接数据异常的错误: 2.在几经辗转后,虽然解决了连接异常的报错,但是!!又出现数据库相关的错误[心碎~崩溃~想放弃!!]但年轻人嘛, ...
- 数组数据通过sql语句转为数据库表衔接到from或join后进行直接或关联查询
Mybatis之数组数据通过sql语句转为数据库表衔接到from或join后进行直接或关联查询 外部数据 当前项目表格数据(表名:service_info) 将外部数据转为Table表格,与servi ...
- leftjoin多表联合查询_结合mybatis-plus 实现无XML多表联合查询
项目地址:github multipleselect java mybatis 多表查询 简介 实现简单的实体类操作多表, 首先你的项目是使用了mybatis-plus 才可以使用 设计说明 如何关联 ...
- java jar包资源文件_深入jar包:从jar包中读取资源文件
我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了.看看 ...
- python代码创建数据库_如何使用python ORM创建数据库表?
首先同大家说了语言的全方面知识,基本上各个位置点都有涉及,不知道大家有没有学到知识点呢?小编还是习惯跟大家说个总结,这样大家才能抓住重点,今天继续来学习下关于Django框架中ORM的使用,主要的作用 ...
- sql 表变量 临时表_何时使用SQL临时表与表变量
sql 表变量 临时表 It is very beneficial to store data in SQL Server temp tables rather than manipulate or ...
- mysql比对表中数据是否相同_如何用sql比较两张表数据是否一致?
在批量程序的测试中,经常会涉及到对数据库表的测试,今天我们来介绍一下用sql比较两张表结构相同的表数据是否完全一致的方法. 1.inner join 浅尝 提到比对两张表的数据是否完全相同,很容易想到 ...
最新文章
- 企业级工作流解决方案(八)--微服务Tcp消息传输模型之服务端处理
- My First Blog on cnblogs (现代程序设计 Homework-01)
- Unity C#基础之 反射反射,程序员的快乐
- 03 jquery easyui 之 easyLoader 加载器
- 计算机制作印章,印章在线制作
- kuka的备选安装包有什么功能_机械臂的软浮动功能
- 标定工具:---improvedOcamCalib的使用及标定结果
- 11.消息摘要算法之MD5
- Mac端将本地新项目上传到github
- map转json与json 转map
- Android文字图像识别并翻译的简单实现
- SlickEdit配置保存路径
- HashMap底层原理实现源码分析
- python sorted lambda_详解python中的lambda与sorted函数
- 查看电脑安装的Office是32位还是64位的
- Chrome插件(扩展)开发全攻略(干货)
- Java基础篇——选择结构
- ECharts实例(4)
- 解决方案资源管理器中显示bin,Debug等文件夹
- linux 默认时区修改
热门文章
- Read Asia Embedded fell
- System Center 2012 R2 支持的SQL版本
- 在Linux操作系统下修改IP、DNS和路由配置
- vim 命令整理(自己常用)
- poj 1001 Exponentiation java解决!!!
- poj 2502 Subway dijkstra基础 !!!!入门题
- 2Do for Mac(任务管理GTD工具)
- 010 Editor for Mac(十六进制编辑器)v12.0
- M1 Mac 是否入手,先了解这些常用软件兼容性!!
- Mac触发角(Hot Corners) 进阶技巧