mysql1241什么问题??? 5C

BEGIN
DECLARE k INT ;
DECLARE m INT ;
DECLARE n FLOAT ;

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,NOT FOUND,SQLWARNING SET flag=500;

SET @str1='UPDATE excel SET ard = CONCAT(`ard`,",1") WHERE `name` IN ';
SET @str1=CONCAT(@str1,snames);
PREPARE stmt1 FROM @str1;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;

SET @str2='UPDATE excel SET ard = CONCAT(`ard`,",0") WHERE `name` NOT IN ';
SET @str2=CONCAT(@str2,snames);
PREPARE stmt2 FROM @str2;
EXECUTE stmt2;
DEALLOCATE PREPARE stmt2;

UPDATE excel SET dates=CONCAT(dates,',',`datess`);

SELECT LENGTH(excel.`ard`)-LENGTH(REPLACE(excel.`ard`,'1','')) INTO k FROM excel ;

SELECT LENGTH(excel.`ard`)-LENGTH(REPLACE(excel.`ard`,',','')) INTO m FROM excel ;

SET n=CONCAT(ROUND(m/(k+1) * 100, 2),'','%')  ;

UPDATE excel SET ardrate=n;

IF flag=500 THEN ROLLBACK;
ELSE SET flag=200;
END IF;

END$$

2个回答

这个里面有很多中文的引号啊,肯定执行报错的。。。符号一定要用英文符号

wang314682
wang314682 操作数应包含%d列
大约 2 年之前 回复
Sinsinw
Sinsinw 回复mango_love: 是的,请问有什么解决办法吗
大约 2 年之前 回复
mango_love
mango_love 回复Sinsinw: 明白了,你是想把in里面的变成动态的是吧。。我这里复制到我的查询页里面看到好多都是中文符号。。
大约 2 年之前 回复
Sinsinw
Sinsinw 是IN后面的字段列数有问题,但我给的snames是类似这样的('一号','二号','三号')
大约 2 年之前 回复
Sinsinw
Sinsinw 没,是这个Operand should contain 1 column(s)
大约 2 年之前 回复

错误:1241 SQLSTATE: 21000 (ER_OPERAND_COLUMNS)

消息:操作数应包含%d列。

Sinsinw
Sinsinw 我这个动态是仅有一列的
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问