一、前言
编写mysql函数,函数运行结果错误,发现是由于使用SELECT...INTO对重复使用的变量赋值失败导致错误。
重复使用一个变量,第二次变量赋值失败,仍然是首次赋值的值,原始是第二次查询结果是N/A。
SELECT N/A INTO 变量; -- 这种赋值方式会赋值失败,会保留上次的值。
二、测试
1.创建测试数据表
CREATE TABLE test ( id INT auto_increment, num INT, PRIMARY KEY ( id ) );
2.插入数据
INSERT INTO `demo`.`test`(`id`, `num`) VALUES (2, NULL);
INSERT INTO `demo`.`test`(`id`, `num`) VALUES (3, 3);
3.测试
(1)情景一:数据库中无此条数据
set @a = 100;
SELECT num from test where id = '1' into @a;
-- SELECT num from test where id = '2' into @a;
-- SELECT num from test where id = '3' into @a;
SELECT @a;
结果:100
(2)情景二:数据库中存在此条数据,但是数据为null
set @a = 100;
-- SELECT num from test where id = '1' into @a;
SELECT num from test where id = '2' into @a;
-- SELECT num from test where id = '3' into @a;
SELECT @a;
结果:Null
(3)情景三:数据库中存在词条数据,并且值是3
set @a = 100;
-- SELECT num from test where id = '1' into @a;
-- SELECT num from test where id = '2' into @a;
SELECT num from test where id = '3' into @a;
SELECT @a;
结果:3