我这里抛一块砖,希望您能引玉。 按照以下步骤执行即可,是一个例子,应该能满足您的要求。首先,建表脚本。CREATE TABLE `table1` ( `KEY` VARCHAR(2) NOT NULL DEFAULT '', `VALUE` VARCHAR(3) NOT NULL DEFAULT '') ;然后,插入测试数据,您可以在这个基础上,随意添加、修改、删除数据。insert into `table1`(`KEY`,`VALUE`) values ('1','蓝色'),('1','红色'),('2','大号'),('2','小号'),('61','精品'),('61','普通品');最后,执行以下代码,不是一条一条的单独执行,而是全部选择后,一起执行。SET @R1 := 0 ;SET @R2 := 0 ;SET @S := '' ;SELECT CONCAT("SELECT @R2:=@R2+1 S1,CONCAT_WS('/',",S1,') S2 FROM ' ,S2,' WHERE ',S3,';') INTO @S FROM (SELECT GROUP_CONCAT('T',R,'.','VALUE') S1,GROUP_CONCAT('TABLE1',' T',R) S2,REPLACE(GROUP_CONCAT('T',R,'.KEY=',T.KEY),',',' AND ') S3 FROM (SELECT @R1:=@R1+1 R,T.KEY FROM TABLE1 T GROUP BY T.KEY) T) T ;PREPARE stmt1 FROM @S ; EXECUTE stmt1 ;
按照以下步骤执行即可,是一个例子,应该能满足您的要求。首先,建表脚本。CREATE TABLE `table1` ( `KEY` VARCHAR(2) NOT NULL DEFAULT '', `VALUE` VARCHAR(3) NOT NULL DEFAULT '') ;然后,插入测试数据,您可以在这个基础上,随意添加、修改、删除数据。insert into `table1`(`KEY`,`VALUE`) values ('1','蓝色'),('1','红色'),('2','大号'),('2','小号'),('61','精品'),('61','普通品');最后,执行以下代码,不是一条一条的单独执行,而是全部选择后,一起执行。SET @R1 := 0 ;SET @R2 := 0 ;SET @S := '' ;SELECT CONCAT("SELECT @R2:=@R2+1 S1,CONCAT_WS('/',",S1,') S2 FROM ' ,S2,' WHERE ',S3,';') INTO @S FROM (SELECT GROUP_CONCAT('T',R,'.','VALUE') S1,GROUP_CONCAT('TABLE1',' T',R) S2,REPLACE(GROUP_CONCAT('T',R,'.KEY=',T.KEY),',',' AND ') S3 FROM (SELECT @R1:=@R1+1 R,T.KEY FROM TABLE1 T GROUP BY T.KEY) T) T ;PREPARE stmt1 FROM @S ; EXECUTE stmt1 ;