我正在尝试编写一个prodecure,更新给定列名中的值,其中用户id等于给定的用户ID。动态MySQL更新声明
_strong_1是一个包含列名称的变量,例如:'category_1'。
SELECT COLUMN_NAME FROM information_schema.`COLUMNS` C
WHERE table_name = 'subscribers_preferences' AND COLUMN_NAME LIKE _strong_1 INTO @columns;
SET @table = 'subscribers_preferences';
SET @s = CONCAT('UPDATE ',@table,' SET ', @columns = 1);
PREPARE stmt FROM @s;
EXECUTE stmt;
'SET @s ='语句内有错误。我可以通过一个简单的SELECT语句来处理它,但UPDATE很棘手。
在此先感谢。
'@ columns'列出了多少列?如果你有多个,那么你需要在每列的末尾添加'= 1'。否则,你有'column1,column2 = 1'这是不正确的语法,它应该是'column1 = 1,column2 = 1'。 – Taryn
“@columns = 1”语句正确吗? – aldux