数据库中,如何用SQL语句实现将某字段下的所有记录合成一条记录,用逗号隔开

具体如下:有两个表,每个表只有一个字段,现在想生成一个新表,新表只有两条记录(也就是之前的两个表),其中一个字段是该表的所有记录(用逗号隔开)。请问以上问题能否用sql语... 具体如下:

有两个表,每个表只有一个字段,现在想生成一个新表,新表只有两条记录(也就是之前的两个表),其中一个字段是该表的所有记录(用逗号隔开)。请问以上问题能否用sql语句实现?具体怎么写?
展开
 我来答
kingboyf4
2013-09-17 · TA获得超过283个赞
知道小有建树答主
回答量:201
采纳率:100%
帮助的人:239万
展开全部

MS Sqlserver(for xml path的巧用):

select 'T1' M, stuff((select ',' + CAST(T1 as varchar) from Table_1 for xml path('')),1,1,'') N
union
select 'T2' M, stuff((select ',' + CAST(T2 as varchar) from Table_2 for xml path('')),1,1,'') N

Oracle(自带这样的函数):

select wm_concat(T1) N from Table_1;--10g写法
select listagg(T1,',') within group (order by T1) N from Table_1;--11g写法
zzkisswll
2013-09-17 · 超过26用户采纳过TA的回答
知道答主
回答量:99
采纳率:0%
帮助的人:48.7万
展开全部
我猜测你的表1和表2的数据量应该不大,这样的话可以把2个表的数据导出到EXCEL,然后再EXCEL中合并整理数据,最后再导回到表3中。这是最快最简单的方法了。
否则只能用SQL的存储过程了,如果需要的话,我可以提供给你。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
17号观察室
2013-09-17 · TA获得超过5730个赞
知道大有可为答主
回答量:3666
采纳率:66%
帮助的人:1352万
展开全部
select distinct ‘T1’ M, stuff((select ','+cast(b.t1 as varchar) from TABLE_1 b where 1=1 for xml path('')),1,1,'') N
from TABLE_1 a
union all
select distinct ‘T2’ M, stuff((select ','+cast(b.t2 as varchar) from TABLE_2 b where 1=1 for xml path('')),1,1,'') N
from TABLE_2 a
追问
请问 where 1=1 是什么意思啊?
追答
因为你就是一个列 把一个列都串起来 条件1=1是永远成立
这样就可以把所有的串起来了 你写2=2也可以啊 只要条件是永恒的 就可以
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
S2源码
2013-09-17
知道答主
回答量:12
采纳率:0%
帮助的人:1.5万
展开全部
水电费水电费
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式