如何组合MySQL记录

时间:2017-09-03 03:52:49

标签: php mysql

我有一个MySQL表,如下所示:

id |   id_item      | 
1  |   T0001        | 
2  |   T0002        |
2  |   T0003        |
3  |   T0004        |

我想改变它:

id |    id_item           | 
1  |   T0001,T0002        | 
2  |   T0001,T0003        |
2  |   T0001,T0004        |
3  |   T0002,T0003        |
4  |   T0002,T0004        |
5  |   T0003,T0004        |

我希望保存在表item_2中,如下所示:

    id |   id_item      | 
    1  |   T0001        | 
    2  |   T0002        |
    3  |   T0001        |
    4  |   T0003        |
    5  |   T0001        |
    6  |   T0004        |
    7  |   T0002        |
    8  |   T0003        |
    9  |   T0002        |
   10  |   T0004        |
   11  |   T0003        |
   12  |   T0004        |

有没有人知道如何使用PHP或MySQL来做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以通过以下查询生成此输出:

SELECT
    CONCAT(t1.id_item, ',', t2.id_item) AS id_item
FROM yourTable t1
INNER JOIN yourTable t2
WHERE
    t2.id > t1.id
ORDER BY
    t1.id,
    t2.id

如果要插入此数据,可以使用上面的选择在新表中执行INSERT INTO ... SELECT。我提到了新表,因为将CSV和非CSV数据存储在同一列中可能没什么意义。实际上,我根本不建议首先存储CSV数据。相反,如果您需要在表示层中使用类似于我上面给出的查询,则只需生成它。

在这里演示:

Rextester