带序号的MySQL更新产生NULL

时间:2016-05-11 04:02:18

标签: mysql

我想更新列的值,并使用相关条目的名称为每行添加一个数字。我已经看到了几个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。以上只适用于数字列类型吗?如果是这样,我如何实现我想做的事情?

1 个答案:

答案 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)))