我想更新列的值,并使用相关条目的名称为每行添加一个数字。我已经看到了几个other questions给出了大致相同的答案,但是当我尝试下面的内容时,我会添加NULL
。
SET @i = 0;
UPDATE matrix_data md
SET col_id_4 = concat((SELECT title from titles t WHERE t.entry_id = md.entry_id), (@i:=@i+1));
如果我用静态值替换(@i:=@i+1)
,则更新可以正常运行。
col_id_4
列设置为text
。以上只适用于数字列类型吗?如果是这样,我如何实现我想做的事情?
答案 0 :(得分:2)
如何使用 titles 表的主键而不是使用迭代器,从而使用 titles.title的串联填充 col_id_4 和 titles.entry_id ,因此......
UPDATE matrix_data
INNER JOIN titles ON matrix_data.entry_id = titles.entry_id
SET matrix_data.col_id_4 = CONCAT(titles.title, "_", titles.entry_id)
或许这是一个类型问题;将迭代器转换为char(50),因为我们与字符串连接应该工作。在一个基本的数据库中测试,而不是#craftcms或#eecms。
SET @i := 0;
UPDATE matrix_data
INNER JOIN titles ON matrix_data.entry_id = titles.entry_id
SET matrix_data.col_id_4 = CONCAT(titles.title, "_", CAST(@i := @i + 1 as CHAR(50)))