一、创建表(test 和 sp)

CREATE TABLE `test` (
`id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`name_code` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `sp` (
`id` int(11) NOT NULL,
`sss` varchar(255) DEFAULT NULL,
`price` decimal(10,2) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入数据

INSERT INTO `test` (`id`, `name`, `name_code`) VALUES (1, 'zhangsan', '1,2,3,4,5');
INSERT INTO `test` (`id`, `name`, `name_code`) VALUES (2, 'lisi', '1,2,3,4');

INSERT INTO `sp` (`id`, `sss`, `price`) VALUES (1, '苹果', 11.00);
INSERT INTO `sp` (`id`, `sss`, `price`) VALUES (2, '香蕉', 22.00);
INSERT INTO `sp` (`id`, `sss`, `price`) VALUES (3, '梨', 33.00);
INSERT INTO `sp` (`id`, `sss`, `price`) VALUES (4, '橘子', 44.00);
INSERT INTO `sp` (`id`, `sss`, `price`) VALUES (5, '芒果', 55.00);
INSERT INTO `sp` (`id`, `sss`, `price`) VALUES (6, '菠萝', 66.00);

二、两张表对应关系

sql语句

SELECT 
  t1.name,
  t1.rn,
  s1.sss,
  s1.price
FROM(
  SELECT
    a.name name,
    substring_index(substring_index( a.rn,',',b.help_topic_id + 1),',' ,- 1) AS rn
  FROM
    (select name,name_code as rn from test where name = 'lisi') a 
  JOIN mysql.help_topic b ON b.help_topic_id < (length(a.rn) - length( replace(a.rn, ',', '') ) + 1)

) t1

LEFT JOIN sp s1 ON s1.id=t1.rn

 结果

 

 

 

 

posted on 2021-12-09 15:15  齐天大圣龙卷风  阅读(528)  评论(0编辑  收藏  举报