Mysql 把每條數據的某個值按特定符號分割成多條數據

一、先創建一個實例表

DROP TABLE IF EXISTS `test_a`;
CREATE TABLE `test_a` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `notice` varchar(20) DEFAULT NULL,
  `descs` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

-- ----------------------------
-- Records of test_a
-- ----------------------------
INSERT INTO `test_a` VALUES ('1', 'a', 'A,B,R');
INSERT INTO `test_a` VALUES ('2', 'b', 'B,D');
INSERT INTO `test_a` VALUES ('3', 'c', 'S,W,M,L');
INSERT INTO `test_a` VALUES ('4', 'd', 'C,E,D');
DROP TABLE IF EXISTS `test_b`;
CREATE TABLE `test_b` (
  `id` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED;

-- ----------------------------
-- Records of test_b
-- ----------------------------
INSERT INTO `test_b` VALUES ('0');
INSERT INTO `test_b` VALUES ('1');
INSERT INTO `test_b` VALUES ('2');
INSERT INTO `test_b` VALUES ('3');
INSERT INTO `test_b` VALUES ('4');
INSERT INTO `test_b` VALUES ('5');

二、現要實現如下結果:

三、實現語句

INSERT INTO test_c SELECT
	notice,
	SUBSTRING_INDEX(
		SUBSTRING_INDEX(a.descs, ",", b.id + 1),
		"," ,- 1
	) AS descs
FROM
	test_a a
INNER JOIN test_b b ON b.id < (
	LENGTH(a.descs) - LENGTH(REPLACE(a.descs, ",", "")) + 1
);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章