报错:Result consisted of more than one row

shihengli2010 2017-05-26 11:21:07
写了一个函数:
参数 : `product_type` int,`app_id` bigint
返回: varchar(64)

BEGIN
#Routine body goes here...
declare typeName varchar(64);
select name into typeName from t_b_product_type where product_type = `product_type` and app_id = `app_id` ;
RETURN typeName;
END

报错:Result consisted of more than one row 。我看了下测试数据,只有一条符合上面的查询条件,不可能有多条记录。

修改为:
在select into 语句末尾添加 limit 1. 就能正常执行

或者给表添加别名,也能得到正确结果,
BEGIN
#Routine body goes here...
declare typeName varchar(64);
select name into typeName from t_b_product_type as a where a. product_type = `product_type` and a.app_id = `app_id` ;
RETURN typeName;
END

请教各位,这是什么情况。
...全文
561 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2017-05-27
  • 打赏
  • 举报
回复
select * from t_b_product_type where product_type = `product_type` and app_id = `app_id` ; 这个语句返回了多行记录。
zjcxc 2017-05-26
  • 打赏
  • 举报
回复
product_type = `product_type` and app_id = `app_id` --------------------------------- 这里的变量名和字段名重复了吧? 所以这里面的条件有问题 加了别名之后,你已经把条件改了,如果你不加别名,直接在字段名上加表名前缀,应该一样能够解决问题
zjcxc 2017-05-26
  • 打赏
  • 举报
回复
错误信息不是说了么? 因为返回的记录超过1 行 出错,加 limit 1,就只返回一行,当然可以解决问题

56,675

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧