怎么基于一个表替换结果中的字符串
表a结构如下
column1 | column2 |
---|---|
abc | 1,2,3 |
表b结构如下
column1 | column2 |
---|---|
1 | a |
2 | b |
3 | c |
怎么查出结果为
column1 | column2 |
---|---|
abc | a,b,c |
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
表a结构如下
column1 | column2 |
---|---|
abc | 1,2,3 |
表b结构如下
column1 | column2 |
---|---|
1 | a |
2 | b |
3 | c |
怎么查出结果为
column1 | column2 |
---|---|
abc | a,b,c |
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
用find_in_set可以处理, 效率具说不咋行
自带的group_concat函数
首先要说下让mysql做这种工作简直是作死。。
给你一个拆分的方法,拆完了联表再使用group_concat就行了:
例:a表c字段为1,2,3,4,5,6,7,8,将c拆为1-8的数字
随便找一个表t有自增字段id,自增值从1到1000,只要你的逗号分隔的字串逗号的个数少于这个1000就可以了,要注意1-1000不跳值,比如1,2,3,4,5,7少了个6是不行的,执行下面的sql就可以将c字段拆分成1-8的值
SELECT substring_index(substring_index(a.c,',',t.id),',',-1)
FROM a join t
ON t.id<=CHAR_LENGTH(a.c)-CHAR_LENGTH(REPLACE(a.c,',',''))+1;