结果不止一行

时间:2016-12-21 17:45:33

标签: mysql if-statement stored-procedures

我做了以下程序,基本上从两列中的一列中转移值" not_good "到列#34; 评论"在同一个表格中使用成绩值:

DELIMITER $$
CREATE OR REPLACE PROCEDURE add_comments()
BEGIN

DECLARE var INT;
SELECT grade INTO var FROM table2;

    IF (var <= 7) THEN
        UPDATE table2 set comment = not_good;
    ELSE
        UPDATE table2 set comment = good;
    END IF;
END$$
DELIMITER ;

当我CALL add_comentarios();时收到以下错误:

#1172 - Result consisted of more than one row

无法弄清楚如何让它按我的意愿运作

PS:我是一个乞丐rsrs

非常感谢您的回答!

2 个答案:

答案 0 :(得分:0)

SELECT X INTO Y个查询仅对单个结果查询有效;因为您的查询从整个表中进行选择,所以只有在表有一行时它才有效。无论如何,你要做的就是用一个查询来完成....

UPDATE table2 
SET comment = CASE WHEN grade <= 7 THEN 'not_good' ELSE 'good' END
;

答案 1 :(得分:0)

选择子句一次获取多条记录,因此您的查询就像这样

 CREATE PROCEDURE add_comment() BEGIN declare var int; SELECT grade INTO var FROM table2 limit 1; if(var <= 7) then update table2 set comment = 'not_good'; else update table2 set comment = 'good'; END IF; END$$

调用创建CALL add_comment();

的程序后