我有一个带有 CSV 格式值的 2 列(value1、value2)的 tableA。我想创建一个与 tableA 具有相同字段的 tableB,但是在这 2 列中,只有有限数量的值(请注意,我不知道逗号之间存在多少个字符)。这个“限制”是 CSV 的前n 个元素。
表 A
+----+----------+----------------------+----------------------+
| id | other | value1 | value2 |
+----+----------+----------------------+----------------------+
| 1 | other1 | 111,222,333,444 | 1616,17,1,8,19,2020 |
| 2 | other2 | 55,6,7777,8,9 | 21,22,23 |
| 3 | other3 | 10101,11.11,13,14,15 | 242424,2525,26,27 |
+----+----------+----------------------+----------------------+
表 B(限制为 3 个元素)
+----+----------+----------------------+----------------------+
| id | other | value1 | value2 |
+----+----------+----------------------+----------------------+
| 1 | other1 | 111,222,333 | 1616,17,1 |
| 2 | other2 | 55,6,7777 | 21,22,23 |
| 3 | other3 | 10101,11.11,13 | 242424,2525,26 |
+----+----------+----------------------+----------------------+
编辑:
我没有提到这些表有大量元素(以及许多其他列,如“其他”)。因此我更喜欢使用:
create table tableB LIKE tableA;
INSERT tableB SELECT * FROM tableA;
然后更新 value1 和 value2 (在 2 个不同的事务中 - 实际上我有 91 个这样的列)。这可能比在单个查询中包含所有值的“创建表”更有效......
EDITED2(解决方案):
SQLFiddle: