我有一个逗号分隔值的字段。我想拆分字段并在同一个表中添加带有获得值的行(分割后)。
例如:
**Data as in db**
ID CustomerId Preferences
------------------------------
1. 4456823 AA,BB,DD
2. 4456824 BB,DD
**Data format required**
ID CustomerId Preferences
------------------------------
1. 4456823 AA
2. 4456823 BB
3. 4456823 DD
4. 4456824 BB
5. 4456824 DD
有没有办法可以在不使用临时表的情况下执行此操作,因为此处的客户是级联实体。此ID由其他表格组成,这是一个自动增量键。< / p>
基本上我想更新第一个字段并插入其他分割值以获得上面显示的所需结果
答案 0 :(得分:0)
这是一种使用整数表(0-9)的方法:
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(id INT NOT NULL
,customerid INT NOT NULL
,preferences VARCHAR(100) NOT NULL
);
INSERT INTO my_table VALUES
(1,4456823,'AA,BB,DD'),
(2,4456824,'BB,DD');
DROP TABLE IF EXISTS my_new_table;
CREATE TABLE my_new_table (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,customerid INT NOT NULL,preferences CHAR(2) NOT NULL);
INSERT INTO my_new_table (customerid,preferences)
SELECT DISTINCT customerid, SUBSTRING_INDEX(SUBSTRING_INDEX(preferences,',',i+1),',',-1) x FROM my_table, ints ORDER BY customerid,x;
SELECT * FROM my_new_table;
+----+------------+-------------+
| id | customerid | preferences |
+----+------------+-------------+
| 1 | 4456823 | AA |
| 2 | 4456823 | BB |
| 3 | 4456823 | DD |
| 4 | 4456824 | BB |
| 5 | 4456824 | DD |
+----+------------+-------------+