mysql - 在mysql中调用一个存储函数,但是得到错误:Subquery returns more than 1 row

标签 mysql function

在 mysql 数据库中,我有一个名为“usertest”的表,其中存储了一些用户信息。我成功地创建了一个名为“getId”的 UDF。这是它的创建方式:

create function getId(name varchar(255))
returns int
begin
declare id_found int;
set id_found=(select Id from usertest where Name=name);
return id_found;
end

应该没问题,但是,当我调用

select getId('mike');

mysql引擎报错:

Subquery returns more than 1 row.

但是在表 usertest 中我只有一行 Name='mike'。那是有线的。有人可以告诉我为什么吗?提前谢谢你:)

最佳答案

列名和变量不区分大小写,所以 Namename 是一回事。它不是将 Name 列与 name 变量进行比较,而是将 name 变量与其自身进行比较,因此它始终为真。

为函数参数使用不同的名称。

create function getId(name_param varchar(255))
returns int
begin
declare id_found int;
set id_found=(select Id from usertest where Name=name_param);
return id_found;
end

或使用表名前缀。

create function getId(name varchar(255))
returns int
begin
declare id_found int;
set id_found=(select Id from usertest where usertest.Name=name);
return id_found;
end

参见 MySQL : When stored procedure parameter name is the same as table column name

关于mysql - 在mysql中调用一个存储函数,但是得到错误:Subquery returns more than 1 row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39060631/

相关文章:

mysql - 使用多列表有什么缺点吗

php - 在单个查询中从多个表获取数据 -mysql

javascript - 函数组合 - 多次循环遍历数组以进行多次操作是否效率低下?

R:积分:达到最大分割数,舍入误差

算法,找到局部/全局最小值,2 个变量的函数

mysql - 关联同一个表中的多个列

mysql - SQL 中没有聚合函数的行到列转换

mysql - 如何回显mysql选择结果codeigniter

R:测试函数从封闭环境中获取哪些对象

c# - 功能,删除所有代码注释