[英]How to use stored function in WHERE condition
我在MySQL中有一个存储的函数get_parents_by_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)';
尝试find_in_set()
:
SELECT id, parents, level
FROM categories
WHERE find_in_set(parents, get_parents_by_id(@id));
注意:这将要求get_parents_by_id()返回以逗号分隔的字符串(varchar)。
注2:存储的函数通常返回单个值,而不是结果集。
根据评论中的格式:
WHERE find_in_set(parents,
REPLACE(REPLACE(get_parents_by_id(@id), ')', ''), '(', ''));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.