数据库中,如何用SQL语句实现将某字段下的所有记录合成一条记录,用逗号隔开
具体如下:有两个表,每个表只有一个字段,现在想生成一个新表,新表只有两条记录(也就是之前的两个表),其中一个字段是该表的所有记录(用逗号隔开)。请问以上问题能否用sql语...
具体如下:
有两个表,每个表只有一个字段,现在想生成一个新表,新表只有两条记录(也就是之前的两个表),其中一个字段是该表的所有记录(用逗号隔开)。请问以上问题能否用sql语句实现?具体怎么写? 展开
有两个表,每个表只有一个字段,现在想生成一个新表,新表只有两条记录(也就是之前的两个表),其中一个字段是该表的所有记录(用逗号隔开)。请问以上问题能否用sql语句实现?具体怎么写? 展开
4个回答
展开全部
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写法
展开全部
我猜测你的表1和表2的数据量应该不大,这样的话可以把2个表的数据导出到EXCEL,然后再EXCEL中合并整理数据,最后再导回到表3中。这是最快最简单的方法了。
否则只能用SQL的存储过程了,如果需要的话,我可以提供给你。
否则只能用SQL的存储过程了,如果需要的话,我可以提供给你。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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也可以啊 只要条件是永恒的 就可以
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询