Mysql 如何在WHERE条件下使用存储函数
我在MySQL中有一个存储函数Mysql 如何在WHERE条件下使用存储函数,mysql,Mysql,我在MySQL中有一个存储函数get\u parents\u by\u id() 但当我尝试在WHERE条件下使用它时,它会生成一个错误 例如: SELECT id, parents, level FROM categories WHERE parents IN get_parents_by_id(@id); 它无法正常工作,并且样本具有: WHERE parents IN (SELECT get_parents_by_id(@id)); 也不管用 各位,我在书中找不到关于MySQL的任
get\u parents\u by\u id()
但当我尝试在WHERE条件下使用它时,它会生成一个错误
例如:
SELECT id, parents, level
FROM categories
WHERE parents IN get_parents_by_id(@id);
它无法正常工作,并且样本具有:
WHERE parents IN (SELECT get_parents_by_id(@id));
也不管用
各位,我在书中找不到关于MySQL的任何内容…它需要返回一个ID数组,而不是包含逗号分隔ID的字符串 目前,您的查询正在进行:-
SELECT id, parents, level
FROM categories
WHERE parents IN '(0, 2, 3, 7)';
请尝试在集合()中查找:
注意:这需要get_parents_by_id()返回逗号分隔的字符串(varchar)
注2:存储函数通常返回单个值,而不是结果集
根据评论中的格式:
WHERE find_in_set(parents,
REPLACE(REPLACE(get_parents_by_id(@id), ')', ''), '(', ''));
@id包含什么?get_parents_by_id的sql是什么?它包含INT valueget_parents_by_id返回字符串,如“(0,2,3,7)”。请提供错误消息。1您的sql语法有错误;检查与您的MySQL服务器版本相对应的手册,了解第34行“get_cat_parents(@id)”附近要使用的正确语法。sql 34 26如果您无法更改过程以返回集合而不是字符串,则应该可以使用该语法,但可能需要稍作调整以修剪字符串两端的括号。@Kickstart什么括号?
是否通过id获得了父母的定义,而我却错过了?关于集合:原始帖子的第三条注释定义了它返回的内容。我已经用FIND_IN_SET()函数完成了这项工作。ebyrob,Kickstart,oldman程序员,nif-非常感谢,你是网络上最好的人!!!
WHERE find_in_set(parents,
REPLACE(REPLACE(get_parents_by_id(@id), ')', ''), '(', ''));