我正在使用光标运行数据集。在每个游标传递中,使用存储过程将字符串拆分,该存储过程将单个元素写入临时表SplitValues
,每行一个值。每个数据集也有一个唯一的 IDds_id
拆分值
value |
--------+
Item1 |
Item2 |
Item3 | `
我还有一个参考表,其中包含拆分函数可能产生的每个项目的 ID:
班级
id | class |
---+--------
5 | Item1 |
6 | Item2 |
7 | Item3 |
8 | Item4 |
9 | Item5 |
我现在要做的是遍历所有行SplitValues
并将它们写入表以存储数据,但是使用类的 ID 而不是类本身来节省存储空间:
贮存
ds_id | class_id |
------+-----------
0 | 5 |
0 | 6 |
0 | 7 |
这应该相当简单,但我失败了。我做了多次尝试,一个是以下游标循环:
FETCH cur1 INTO ds_id, string;
CALL `Split_String`(string, ',');
INSERT INTO storage (ds_id, class_id)
SELECT ds_id,
(SELECT classes.id FROM classes WHERE class = SplitValues.value ) as class_id ;
[...]
产生的错误Unknown column 'SplitValues.value' in 'where clause'
我进行了很多搜索,并认为我的问题与别名有关,但无法找到解决方案。