我有一个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来做到这一点?
答案 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数据。相反,如果您需要在表示层中使用类似于我上面给出的查询,则只需生成它。
在这里演示: