我有 table :
+---------------+------------------------------+-----+------+
| id_order | id_product | qty | size |
+---------------+------------------------------+-----+------+
| ORD-0413-17-1 | PRD-0408-17-2,PRD-0412-17-11 | 2,3 | M,S |
+---------------+------------------------------+-----+------+
我想要这样的输出:
+---------------+---------------+-----+-------+
| id_order | id_product | qty | size |
+---------------+----------------+-----+------+
| ORD-0413-17-1 | PRD-0408-17-2 | 2 | M |
| ORD-0413-17-1 | PRD-0412-17-11 | 3 | S |
+---------------+----------------+-----+------+
我怎样才能做到这一点?
最佳答案
这是从“数据”构建标准化“结果”的一种方法...我正在使用一个简单的整数实用表(0-9),但您可以只使用一堆 UNION 来代替。
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(id_order VARCHAR(20) NOT NULL
,id_product VARCHAR(255) NOT NULL
,qty VARCHAR(30) NOT NULL
,size VARCHAR(30) NOT NULL
);
INSERT INTO my_table VALUES
('ORD-0413-17-1','PRD-0408-17-2,PRD-0412-17-11','2,3','M,S');
DROP TABLE IF EXISTS ints;
CREATE TABLE ints(i INT NOT NULL PRIMARY KEY);
INSERT INTO ints VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
SELECT DISTINCT id_order
, SUBSTRING_INDEX(SUBSTRING_INDEX(id_product,',',i+1),',',-1) id_product
, SUBSTRING_INDEX(SUBSTRING_INDEX(qty,',',i+1),',',-1) qty
, SUBSTRING_INDEX(SUBSTRING_INDEX(size,',',i+1),',',-1) size
FROM my_table,ints;
id_order id_product qty size
ORD-0413-17-1 PRD-0408-17-2 2 M
ORD-0413-17-1 PRD-0412-17-11 3 S
关于php - SQL 将值拆分为多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43386517/