Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在WHERE条件下使用存储函数_Mysql - Fatal编程技术网

Mysql 如何在WHERE条件下使用存储函数

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的任

我在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), ')', ''), '(', ''));