Mysql行列转换,欢迎讨论指正

本文探讨了使用Mysql存储过程实现将多个字段值拼接为一个字符串的方法。作者尝试了多种方式,最终通过自定义变量及循环实现了需求。文章详细记录了实现过程及其遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查了好多资料,在Mysql存储过程中都无法实现我的功能,其实在Oracle中会很简单,第一次接触Mysql存储过程搞了一天多时间,郁闷,贴出来欢迎大家指正,或者有更好的方法大家讨论。
需求很简单(Orcale中 mssql中很容易实现):将用户组的列拼成一行,如:
+--------------------+
name
+====================+
一般客户
VIP客户
其他客户
---------------------------
拼成:一般客户,VIP客户,其他客户
我要用Mysql存储过程实现,需要嵌套cursor才能实现功能(因为还有别的表联合),可是嵌套cursor无法实现(我是没查到到目前mysql5.0版式不成),只有想其他办法,下边是我的代码:

drop procedure test111;
delimiter//
create procedure test111()
begin
select count(*) into @n from t_custom_group order by id desc;
set @i=1;set @str = '';set @tmp = '';set @strRet = '';
while @i <= @n do
select @tmp := name from t_custom_group where LOCATE(concat(',',name,','), @str) = 0 order by id desc;
set @str = concat(@str,',',@tmp,',');
set @strRet = concat(@strRet,@tmp,',');
set @i = @i+1;
select @strRet;
end while;
end


不知道有没有其他更好的方法,呵呵
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值