我在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的书......
答案 0 :(得分:0)
它需要返回一个id数组,而不是一个包含逗号分隔ID的字符串。
目前您的查询正在执行: -
SELECT id, parents, level
FROM categories
WHERE parents IN '(0, 2, 3, 7)';
答案 1 :(得分:0)
尝试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), ')', ''), '(', ''));