如何通过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将不同数据库表中记录两行合并为一行相关推荐

  1. sql同时修改两个表的数据_如何用SQL做数据透视表?

    - 点击上方"中国统计网"订阅我吧!- 讲过很多次,数据分组和数据透视表很像,Sql 中的数据分组大家应该都很熟悉了,用的就是 group by. 数据透视表是作为一个数据分析师最 ...

  2. sql程序实现事物锁表和解锁_怎样用SQL给SQL2880特定表加锁解锁

    展开全部 select * from table with (...) SELECT 语句中"加锁选项"的功能说明62616964757a686964616fe58685e5aeb ...

  3. mysql表无法获取_CentOS下无法正常获取MySQL数据库表数据的问题

    Y~9vl5B{l1K+n0之前,由于客户要求在centOS下安装系统应用,因此有机会接触了一下CentOS,顺便也了解了下CentOS的常规操作,还有在CentOS下的相关操作.,U+_n@&quo ...

  4. You have an error in your SQL syntax +改动数据库表名后异常(已解决)【MySQL+SSM】

    出现的问题: 1.改变数据库中的某个表名时,eclipse中报错为连接数据异常的错误: 2.在几经辗转后,虽然解决了连接异常的报错,但是!!又出现数据库相关的错误[心碎~崩溃~想放弃!!]但年轻人嘛, ...

  5. 数组数据通过sql语句转为数据库表衔接到from或join后进行直接或关联查询

    Mybatis之数组数据通过sql语句转为数据库表衔接到from或join后进行直接或关联查询 外部数据 当前项目表格数据(表名:service_info) 将外部数据转为Table表格,与servi ...

  6. leftjoin多表联合查询_结合mybatis-plus 实现无XML多表联合查询

    项目地址:github multipleselect java mybatis 多表查询 简介 实现简单的实体类操作多表, 首先你的项目是使用了mybatis-plus 才可以使用 设计说明 如何关联 ...

  7. java jar包资源文件_深入jar包:从jar包中读取资源文件

    我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了.看看 ...

  8. python代码创建数据库_如何使用python ORM创建数据库表?

    首先同大家说了语言的全方面知识,基本上各个位置点都有涉及,不知道大家有没有学到知识点呢?小编还是习惯跟大家说个总结,这样大家才能抓住重点,今天继续来学习下关于Django框架中ORM的使用,主要的作用 ...

  9. sql 表变量 临时表_何时使用SQL临时表与表变量

    sql 表变量 临时表 It is very beneficial to store data in SQL Server temp tables rather than manipulate or ...

  10. mysql比对表中数据是否相同_如何用sql比较两张表数据是否一致?

    在批量程序的测试中,经常会涉及到对数据库表的测试,今天我们来介绍一下用sql比较两张表结构相同的表数据是否完全一致的方法. 1.inner join 浅尝 提到比对两张表的数据是否完全相同,很容易想到 ...

最新文章

  1. 企业级工作流解决方案(八)--微服务Tcp消息传输模型之服务端处理
  2. My First Blog on cnblogs (现代程序设计 Homework-01)
  3. Unity C#基础之 反射反射,程序员的快乐
  4. 03 jquery easyui 之 easyLoader 加载器
  5. 计算机制作印章,印章在线制作
  6. kuka的备选安装包有什么功能_机械臂的软浮动功能
  7. 标定工具:---improvedOcamCalib的使用及标定结果
  8. 11.消息摘要算法之MD5
  9. Mac端将本地新项目上传到github
  10. map转json与json 转map
  11. Android文字图像识别并翻译的简单实现
  12. SlickEdit配置保存路径
  13. HashMap底层原理实现源码分析
  14. python sorted lambda_详解python中的lambda与sorted函数
  15. 查看电脑安装的Office是32位还是64位的
  16. Chrome插件(扩展)开发全攻略(干货)
  17. Java基础篇——选择结构
  18. ECharts实例(4)
  19. 解决方案资源管理器中显示bin,Debug等文件夹
  20. linux 默认时区修改

热门文章

  1. Read Asia Embedded fell
  2. System Center 2012 R2 支持的SQL版本
  3. 在Linux操作系统下修改IP、DNS和路由配置
  4. vim 命令整理(自己常用)
  5. poj 1001 Exponentiation java解决!!!
  6. poj 2502 Subway dijkstra基础 !!!!入门题
  7. 2Do for Mac(任务管理GTD工具)
  8. 010 Editor for Mac(十六进制编辑器)v12.0
  9. M1 Mac 是否入手,先了解这些常用软件兼容性!!
  10. Mac触发角(Hot Corners) 进阶技巧