在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/數據庫/ 怎么基于一個表替換結果中的字符串

怎么基于一個表替換結果中的字符串

表a結構如下

column1 column2
abc 1,2,3

表b結構如下

column1 column2
1 a
2 b
3 c

怎么查出結果為

column1 column2
abc a,b,c
回答
編輯回答
尐懶貓

用find_in_set可以處理, 效率具說不咋行

create table a (
  id int primary key auto_increment,
  column1 varchar(50),
  column2 varchar(100)
) engine = InnoDB;

insert into a values (1, 'abc', '1,2,3');

create table b (
    id int primary key auto_increment,
    column1 int default 0,
    column2 varchar(10) default ''
) engine = InnoDB;

insert into b values (1, 1, 'a');
insert into b values (2, 2, 'b');
insert into b values (3, 3, 'c');


select a.column1, (select group_concat(b.column2) as column2 from b where find_in_set(b.column1, a.column2)) as column2 from a;
2018年9月5日 02:45
編輯回答
爆扎

自帶的group_concat函數

2017年9月8日 15:53
編輯回答
局外人

首先要說下讓mysql做這種工作簡直是作死。。
給你一個拆分的方法,拆完了聯(lián)表再使用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是不行的,執(zhí)行下面的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;

2017年4月10日 21:30