mysql 字段數據拆分與行轉列


一、創建表(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

 結果

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM