php - SQL 将值拆分为多个列

标签 php mysql

我有 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/

相关文章:

php - 提高 yii 中的 sqlite 性能

javascript - 如何使用 jquery 将从服务器文件获取的 JSON 值填充到创建的 HTML 表单中?

php - 在xampp中使用域名而不是localhost

mysql - Amazon EC2 上的 MySQL 数据库和 Amazon RDS 上的 MySQL 数据库有什么区别

java - 二维码和扫描仪,Android ?

mysql - 正向工程 EER 图时出现错误 1005

php - mysql_num_rows 错误,但数据库已更新

php - 如何比较两个多维数组中的唯一条目?

php - 使用ajax提交登录表单时无法设置php session ?

php - 如何在 JavaScript 中访问这个关联数组?